That's pretty cool!
I just use newxvalue and newzvalue, like this:
dim pos(5,1)
pos(5,0)=60 : pos(5,1)=80
maxspeed=10
speed#=0
do
gosub moveship
gosub drawship
sync
cls
set cursor 600,15 : print rot
set cursor 600,30 : print speed#
loop
moveship:
if rightkey()=1 then rot=wrapvalue(rot+3)
if leftkey()=1 then rot=wrapvalue(rot-3)
if upkey()=1
if speed#<maxspeed then speed#=speed#+0.5
else
if speed#>0 then speed#=speed#-0.2
endif
if speed#>maxspeed then speed#=maxspeed
if speed#<0 then speed#=0
if speed#>0
pos(5,0)=WRAPVALUE(newxvalue(pos(5,0),rot,speed#))
pos(5,1)=WRAPVALUE(newzvalue(pos(5,1),rot,speed#))
endif
pos(0,0)=(pos(5,0)*1.7)+14
pos(0,1)=(pos(5,1)*1.1)+12
return
drawship:
pos(1,0)=newxvalue(pos(0,0),rot,35)
pos(1,1)=newzvalue(pos(0,1),rot,35)
pos(2,0)=newxvalue(pos(0,0),rot+120,20)
pos(2,1)=newzvalue(pos(0,1),rot+120,20)
pos(3,0)=newxvalue(pos(0,0),rot+240,20)
pos(3,1)=newzvalue(pos(0,1),rot+240,20)
pos(4,0)=newxvalue(pos(0,0),rot+180,1)
pos(4,1)=newzvalue(pos(0,1),rot+180,1)
line pos(2,0),pos(2,1),pos(1,0),pos(1,1)
line pos(3,0),pos(3,1),pos(1,0),pos(1,1)
line pos(2,0),pos(2,1),pos(4,0),pos(4,1)
line pos(3,0),pos(3,1),pos(4,0),pos(4,1)
return
that's part of what I have for some asteroids clone I'm trying to make; I find it much easier than fiddling about with vertices (don't understand them)...
Hopefully I should learn how to use vertices soon 'cos they're the next topic in my maths course so once I have the basics I'll give them a whirl, I'm just too lazy to learn anything new unless it's absolutely necessary...
"A West Texas girl, just like me"
-Bush