Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Vertical Circular Motion: graphing over time

  1. Jan 21, 2006 #1
    Hello! This is my first post in this wonderful forum. I have a feeling I'll be frequenting here often. I did a search for my question, but I haven't found any truly similar questions. For what it's worth, I may be out of my league trying to figure this one out, but I'd love some help.
    I'm trying to model vertical circular motion in vpython. I banged my head against the wall trying to determine a general formula for the x and y positions of a ball-on-a-string (given the initial velocity at the top or bottom, or the tension at the top or bottom, and the radius of the circle).

    I finally found (online) the answer (or at least I thought so):

    x = r sin (PI*t - 0.5 sin (PI*t))
    y = r cos (PI*t - 0.5 sin (PI*t))

    This works beautifully, except that as far as I can tell, this is for the special case where the tension is zero at the top of the path (i.e., where the ball just makes it around the loop without collapsing). For those who care, I've included the vpython script at the bottom of the page.

    Question #1: How does one derive those cool formulas? I'm not even sure where to start (although I imagine it is with the radial and tangential accelerations).

    Question #2: Is there a more general form that would include the ability to adjust for an increased velocity at the top of the path, or alternately for a tension at the top of the path?

    Thanks in advance!!

    (Sorry about the "...."s in the code below. For some reason the white space wasn't being preserved in preview, and vpython demands proper tabbing. Please remove the "...." and replace with spaces for proper vpython code).

    Code (Text):

    from visual import *

    scene.background = color.white
    ball = sphere(pos=(0,10,0), color=color.magenta, radius=0.5)
    string = cylinder(pos=(0,0,0), axis=(0,10,0), color=color.black, radius=0.05)
    # These are the initial conditions at the top of the circle, for a counterclockwise rotation
    PI = 3.1415926535
    radius = 10

    scene.autoscale = 0
    while 1:
    ....t = t + 0.01
    ....ball.pos = (radius * sin (PI*t - 0.5 * sin(PI*t)),radius * cos (PI*t - 0.5 * sin(PI*t)),0)
    ....string.axis = (ball.pos.x,ball.pos.y,0)
    ....sphere(pos=(10 * sin (PI*t - 0.5 * sin(PI*t)),10 * cos (PI*t - 0.5 * sin(PI*t)),0),color=color.blue, radius=0.1)
    ....print "t=%f, x=%f, y=%f" % (t,ball.pos.x,ball.pos.y)
  2. jcsd
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Can you offer guidance or do you also need help?
Draft saved Draft deleted