Everywhere Pointer
My five-year-old son wanted to make an arrow. I one-upped him by making four arrows. He liked the shape and called it an “everywhere pointer.”
We can make this with the following code:
fracture = 0.1
length = 14
width = 4
pointiness = 15
nsides = 20
shaftToHeadAngle = 110
barbAngle = 135
arrow =
-- Right upright.
move length
-- Start arrowhead.
yaw shaftToHeadAngle
move width
-- Head to point.
yaw -1 * barbAngle
move pointiness
-- We just hit the point. Now return.
yaw -1 * (180.0 - 2 * (barbAngle - shaftToHeadAngle))
move pointiness
-- Finish arrow head.
yaw -1 * barbAngle
move width
-- Left upright.
yaw shaftToHeadAngle
move length
end
moveto 0 0 0
repeat 4
arrow
yaw 90
end
tube
This code makes me realize I should try to add the unary negation operator. Right now I have to verbosely multiply by -1. Finding a general solution to the angles was another good geometry exercise.