### Author Topic: A smoothly curving towards B  (Read 4034 times)

#### loganite

• Guest
##### A smoothly curving towards B
« on: 2008-Jan-27 »
I read the excellent article on smoothly moving from point a to point b and thought some work I had done on vector printing using bezier splines might have a application here. The code follows below, it could be used for examples like :

Missles gaining height and then shooting off towards their target
Aliens outflanking players etc

Code: GLBasic [Select]
GETSCREENSIZE screenwidth,screenheight
sx=screenwidth*.2;sy=screenheight*.5   //start point
ex=screenwidth*.8;ey=screenheight*.5   //end point
bx=screenwidth*.5;by=screenheight*.5   //curve towards point
animTime=2000   //animation time of 2 seconds

startTime=GETTIMERALL()
WHILE TRUE

MOUSESTATE bx,by,b1,b2

elapsed = GETTIMERALL()-startTime
IF elapsed > animTime   //restart the animation
startTime = GETTIMERALL()
elapsed = 0
ENDIF

T=elapsed/animTime   //how long along the path

DRAWRECT x,y,10,10,255

PRINT "Time:"+elapsed,0,20
PRINT "< Curves Toward",bx,by
PRINT "^ start point",sx,sy+10
PRINT "^ end point",ex,ey+10
SHOWSCREEN

WEND
END

//point0=start point, point1=bezier point, point2 = end point, 0<t<1 = where along the path

pt = POW((1-t),2)*Point0 + 2*t*(1-t)*Point1 +t*t*Point2
RETURN pt

ENDFUNCTION

#### Quentin

• Prof. Inline
• Posts: 915
##### A smoothly curving towards B
« Reply #1 on: 2008-Jan-27 »
looks nice, could be very handy for controlling enemy ships or something like that

#### Kitty Hello

• code monkey
• Prof. Inline
• Posts: 10695
• here on my island the sea says 'hello'
##### A smoothly curving towards B
« Reply #2 on: 2008-Jan-27 »
Genious!

#### bigsofty

• Community Developer
• Prof. Inline
• Posts: 2605
##### A smoothly curving towards B
« Reply #3 on: 2008-Jan-28 »
Excellent stuff!
Cheers,

Ian.

“It is practically impossible to teach good programming style to students that have had prior exposure to BASIC.  As potential programmers, they are mentally mutilated beyond hope of regeneration.”
(E. W. Dijkstra)