PointA.x = -200
PointA.y = -100
PointB.x = 200
PointB.y = 100
' Main loop
q = -4 * (1 - 2 * t)
p = .5 * (1 + tanh(q)) ' Goes from 0 to 1.
Player.x
= PointA.x
+ Displacement.x
* (p
) + Tangential.x
* (40 * SIN(2 * pi
* p
)) Player.y
= PointA.y
+ Displacement.y
* (p
) + Tangential.y
* (40 * SIN(5 * pi
* p
))
'CLS
LOCATE 1, 1:
PRINT "Left-Click+Drag to move target point." CALL ccircle
(PointA.x
, PointA.y
, 20, _RGBA(255, 0, 0, 255)) CALL ccircle
(Player.x
, Player.y
, 20, _RGBA(0, 255, 0, 255)) CALL ccircle
(PointB.x
, PointB.y
, 20, _RGBA(0, 0, 255, 255))
Displacement.x = PointB.x - PointA.x
Displacement.y = PointB.y - PointA.y
Tangential.x = -Displacement.y
Tangential.y = Displacement.x
mag
= SQR(Tangential.x
^ 2 + Tangential.y
^ 2) Tangential.x = Tangential.x / mag
Tangential.y = Tangential.y / mag
tanh
= (EXP(2 * x
) - 1) / (EXP(2 * x
) + 1)