| Thread Closed |
Location on a circle at time t. |
Share Thread | Thread Tools |
| Aug6-08, 04:35 PM | #1 |
|
|
Location on a circle at time t.
Hi all. I'm doing a little program for my own fun and I'm having troubles with the physics. I need to be able to calculate where an object is on a circle after an amount of time has passed. I know the radius (R) of the circle, the starting x (Sx) and y (Sy) positions, and the velocity (v). I'd like to be able to generated the finishing x (Fx) and y (Fy) positions. The velocity and radius are constant for each object, but I have several objects rotating around a central point. It's similar to planets orbiting the sun, but I don't need to have any gravitational interaction between the objects. I also know the mass of the objects (m) if I need that for calculating.
Can anyone give me a formula or set of formulas to solve for Fx,Fy? Thanks! |
| Aug6-08, 08:53 PM | #2 |
|
|
In terms of the variables given it should be:
[tex] \begin{align*} F_x &= S_x\cos(vt/R) - S_y\sin(vt/R) \\ F_y &= S_x\sin(vt/R) + S_y\cos(vt/R) \end{align*} [/tex] |
| Aug7-08, 10:00 AM | #3 |
|
|
That's what I was looking for. Thanks Peeter.
|
| Aug8-08, 03:43 PM | #4 |
|
|
Location on a circle at time t.
I seem to be having problems converting the formulas into my code. Here's the code I've created:
Code:
'Starting values
nRadius = 30
StartX = 130
StartY = 100
CenterX = 100
CenterY = 100
nVelocity = 1
'Set the current XY to be the starting XY
CurX = StartX
CurY = StartY
'Draw a line from 0,0 to the starting point
DrawPoint(0, 0, CurX, CurY)
'Save the point data to a file for analysis (currentX, CurrentY, Distance from "center" to XY, Distance from 0,0 to XY)
fStream.WriteLine(CurX.ToString + "," + CurY.ToString + "," + Sqrt(((CurX - CenterX) * (CurX - CenterX)) + ((CurY - CenterY) * (CurY - CenterY))).ToString + "," + Sqrt(((CurX) * (CurX)) + ((CurY) * (CurY))).ToString)
'Loop 360 times to form the circle
For nTime = 1 To 360
'Set the new CurX
CurX = StartX * (Cos((nVelocity * nTime) / nRadius)) - StartY * (Sin((nVelocity * nTime) / nRadius))
'Set the new CurY
CurY = StartX * (Sin((nVelocity * nTime) / nRadius)) + StartY * (Cos((nVelocity * nTime) / nRadius))
'Save the point data to a file for analysis (currentX, CurrentY, Distance from "center" to XY, Distance from 0,0 to XY)
fStream.WriteLine(CurX.ToString + "," + CurY.ToString + "," + Sqrt(((CurX - CenterX) * (CurX - CenterX)) + ((CurY - CenterY) * (CurY - CenterY))).ToString + "," + Sqrt(((CurX) * (CurX)) + ((CurY) * (CurY))).ToString)
'Draw a line from 0,0 to the calculated point
DrawPoint(0, 0, CurX, CurY)
Next
Code:
X Coord Y Coord Distance from 100,100 Distance from 0,0 130 100 30 164.0121947 126.5950684 104.2769805 26.936782 164.0121947 123.0494886 108.4381084 24.5454802 164.0121947 119.3671998 112.4787607 23.03926859 164.0121947 115.5522931 116.3944481 22.59760498 164.0121947 111.6090068 120.1808204 23.28163551 164.0121947 107.541722 123.8336708 24.99842864 164.0121947 103.3549575 127.3489409 27.55395272 164.0121947 99.05336477 130.7227254 30.73730588 164.0121947 94.64172292 133.9512758 34.37150361 164.0121947 90.12493334 137.0310052 38.32508694 164.0121947 Thanks, NCGrimbo |
| Aug8-08, 04:08 PM | #5 |
|
|
Yes, those points were relative to the center at the origin.
[tex] \begin{align*} F_x &= C_x + (S_x-C_x)\cos(vt/R) - (S_y-C_y)\sin(vt/R) \\ F_y &= C_y + (S_x-C_x)\sin(vt/R) + (S_y-C_y)\cos(vt/R) \end{align*} [/tex] |
| Aug8-08, 04:49 PM | #6 |
|
|
|
| Thread Closed |
| Thread Tools | |
Similar Threads for: Location on a circle at time t.
|
||||
| Thread | Forum | Replies | ||
| simple circle circle collision detection | General Math | 6 | ||
| Hyperbolic Circle <=> Euclidean Circle. | General Math | 1 | ||
| Location, location, location. | Brain Teasers | 8 | ||
| What if time was round like a circle? | Special & General Relativity | 9 | ||
| Is Time Location Dependant? | Special & General Relativity | 4 | ||