aUCBLogo Demos and Tests / shortcutgraphics


to shortcutgraphics
   
;cs
   
WindowMode
   
size=1
   
width=30
   
texy=0
   
;f 50
   ;r 180 50
   ;l 180 50
end

to len
;   PenUp fd len*size setTexXY xCor/10 zCor/10 back len*size PenDown
   
ht
   
local [texo]
   
texo=shortcutgraphics::texy
   
shortcutgraphics::texy shortcutgraphics::texy+len*shortcutgraphics::size/10
   
local [p0 ori]
   
p0=PosXYZ ori=Orientation
   
left 90 fd shortcutgraphics::width/right 90 
   
PenDown
   
PolyStart
   
setTexXY shortcutgraphics::texy  fd len*shortcutgraphics::size  right 90
   
setTexXY shortcutgraphics::texy  fd shortcutgraphics::width right 90
   
setTexXY :texo  fd len*shortcutgraphics::size  right 90
   
setTexXY :texo  fd shortcutgraphics::width right 90
   
PolyEnd
   
PenUp
   
setPosXYZ :p0 setOrientation :ori
   
fd len*shortcutgraphics::size
   
st
end

to angle radius
   
ht
   
arc2t angle radius*shortcutgraphics::size
   
st
end

to angle radius
   
ht
   
arc2t -angle -radius*shortcutgraphics::size
   
st
end

to arc2t angle radius
   
local [w p0 p1 p2 p3 p4 ori texo]
   
w= -shortcutgraphics::width ;*signum radius
   
PenUp right 90 fd radius left 180
   
fd radius+:w/p1=PosXYZ
   
back :w p4=PosXYZ
   
back radius-:w/2
   
for [phi angle/20 angle angle/20]
   
[   right angle/20
;      fd radius setTexXY xCor/10 zCor/10 back radius
      
texo=shortcutgraphics::texy
      
shortcutgraphics::texy=shortcutgraphics::texy+abs (pi/180)*(angle/20)*radius/10
      
fd radius+:w/p2=PosXYZ 
      
back :w p3=PosXYZ
      
back radius-:w/2
      
p0=PosXYZ ori=Orientation
      
SetPosXYZ :p1
      
PenDown
      
PolyStart
      
setTexXY :texo  setPosXYZ :p1
      
setTexXY shortcutgraphics::texy  setPosXYZ :p2
      
setTexXY shortcutgraphics::texy  setPosXYZ :p3
      
setTexXY :texo  setPosXYZ :p4
      
PolyEnd
      
PenUp
      
setPosXYZ :p0 setOrientation :ori
      
p1=:p2
      
p4=:p3
   
]
   
pu fd radius rt 90 pd
end