Help me math better - trig help needed
BlitzMax Forums/BlitzMax Programming/Help me math better - trig help needed
| ||
| Hey guys. I have here a simple pixel moving in a circle, with a line indicating its original starting point. Strict
Graphics(640, 480, 0)
Global mover:tMovingObj = New tMovingObj
FlushKeys()
Delta.Start()
While Not GetChar()
Delta.Update()
mover.update()
Cls
mover.draw()
Flip(0)
Wend
End
Type tMovingObj
Global x:Float
Global xOrigin:Float
Global y:Float
Global yOrigin:Float
Global ctr:Float
Global speed:Float
Method New()
x = 320
xOrigin = x
y = 240
yOrigin = y
ctr = 0
speed = 200
End Method
Method update()
x:-Cos(ctr) * speed * Delta.Time()
y:+Sin(ctr) * speed * Delta.Time()
ctr:+(speed * Delta.Time())
End Method
Method draw()
Plot(x, y)
Plot(xOrigin, yOrigin)
DrawLine(xOrigin, yOrigin, x, y)
DrawText("x="+x+", y="+y, 0, 11)
End Method
End Type
Type Delta Abstract
Global DeltaTime:Float
Global TimeDelay:Int
Global DeltaSpeed:Float = 0.001
Function Start()
TimeDelay = MilliSecs()
End Function
Function Time:Float()
Return DeltaTime
End Function
Function Update()
DeltaTime = ( MilliSecs()- TimeDelay ) * DeltaSpeed
TimeDelay = MilliSecs()
EndFunction
End Type
Pretty straightforward. I need some help predicting the motion and my trig game is weak. Currently, I set a starting point and the object moves in a circle starting from that point. The size of the circle is determined arbitrarily, by increasing the ctrvariable. What I need is to be able to specify a point and instead have the object circle around that point at a specified radius. It's a pretty big change from what I have here. Can anyone help? Many thanks. |
| ||
Figured it out. Been too many years since I used this.Method update() x = xOrigin + Sin(ctr) * 10 y = yOrigin + Cos(ctr) * 10 ctr:+(speed * Delta.Time()) End Method |