Register to reply

Location on a circle at time t.

by NCGrimbo
Tags: circle, location, time
Share this thread:
NCGrimbo
#1
Aug6-08, 04:35 PM
P: 4
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!
Phys.Org News Partner Physics news on Phys.org
Researchers demonstrate ultra low-field nuclear magnetic resonance using Earth's magnetic field
Bubbling down: Discovery suggests surprising uses for common bubbles
New non-metallic metamaterial enables team to 'compress' and contain light
Peeter
#2
Aug6-08, 08:53 PM
P: 295
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]
NCGrimbo
#3
Aug7-08, 10:00 AM
P: 4
That's what I was looking for. Thanks Peeter.

NCGrimbo
#4
Aug8-08, 03:43 PM
P: 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:

'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
This code draws a cicle centered on 0,0 that is 164 pixels long. Since my value for nRadius is 30, what I was expecting is a circle centered on 100,100 that is 30 pixels long. Here's a few of the data points that get generated:

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
Is there some sort of shifting I need to do in the formula to account for the fact that my center is not 0,0?

Thanks,
NCGrimbo
Peeter
#5
Aug8-08, 04:08 PM
P: 295
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]
NCGrimbo
#6
Aug8-08, 04:49 PM
P: 4
Quote Quote by Peeter View Post
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]
That fixed it. Thanks again Peeter!!


Register to reply

Related Discussions
Simple circle circle collision detection General Math 6
Hyperbolic Circle <=> Euclidean Circle. General Math 1
Location, location, location. Fun, Photos & Games 8
What if time was round like a circle? Special & General Relativity 9
Is Time Location Dependant? Special & General Relativity 4