to geomland.label_position :obj :pos :dis
if point? :obj
[ output point :obj.x+:dis * (cos :pos) :obj.y+:dis * (sin :pos) ]
if (segment? :obj) or (ray? :obj) or (line? :obj)
[
make local "norm ((normalize (:obj.final-:obj.initial)) ° 90)*:dis
output (pointon :obj :pos)+:norm
]
if (circle? :obj) or (ellipse? :obj) or (hyperbola? :obj) or (parabola? :obj) or (angle? :obj)
[
make local "norm ((point 1 0) ° :pos)*:dis
output (pointon :obj :pos)+:norm
]
error "'Invalid type of geometric value in label_position'
end
|