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

X,Y Coordinates Circle, Different Plane

  1. Jan 19, 2008 #1
    Hi All

    I'm a programmer but hopeless at maths, new to this forum so seriously hoping you can help please.

    I need to draw spokes in a circle as part of a program. Like a dartboard or spokes of a wheel.


    X = cos(t) and
    Y = sin(t)
    For a unit circle where t is the angle.

    That’s all ok.

    Unit circle has origin of 0,0

    My circle has an origin 200,200.

    Unit circle has coordinates as so:
    East: 1,0
    North: 0,1
    West: -1,0
    South: 0,-1

    My circle has coordinates as follows:
    East: 400,200
    North: 200,0
    West: 0,200
    South: 200,400

    Where north south east and west are the outermost points of the circle.
    Note that in my circle the Y axis is inverted.

    I tried:
    X = 200 + cos(t) * 200
    Y = 200 + sin(t) * 200

    This gets me points on the circumference of the circle for each value of t (the angle).
    However the points derived do not correspond to anywhere near where I want them to be. t = 0 is correct, t = 1 gives me a point that looks like an angle greater than 180 degrees.

    I just cannot figure this out, hoping you can provide some help, please.

    Thank You
    John
     
  2. jcsd
  3. Jan 19, 2008 #2

    CompuChip

    User Avatar
    Science Advisor
    Homework Helper

    Are you sure you are putting in the angle in the right units? Check if in the language you are using, sin and cos accept an argument in degrees or in radians. Because your equations do parametrize a circle of radius 100 with center point (200, 200) (starting east going counter clockwise).
     
  4. Jan 19, 2008 #3
    Hi CompuChip

    Thanks very much for your reply.

    You were exactly correct.

    I'm using Java.

    The Math.cos( a ) and Math.sin( a ) methods do expect 'a' to be in radians not degrees.

    So... I translated my angle to radians before submitting to the Math.cos and Math.sin methods.

    Now, using that formula previously provided the line does not reach the circumference for every given angle and the angle is still seemiingly random (although probably not, just seemingly).

    Anyway, I've solved my delima through a different means. I was able to rotate the end points by X radians. This works for me.

    For anyone interested, the Java code is as follows.

    Code (Text):

    //Within the public void paint( Graphics g ) method:
    //After drawing the circle with radius = 200 and origin 0, 0
    //Origin 0, 0 remember is the top left point of the square that encloses the circle.
    //This gives center points for the circle at 200, 200

    Graphics2D g2d = (Graphics2D)g;
    g2d.translate(200, 200); //Translate to origin 200, 200 from 0, 0;
               
    for( int i=0; i<NUMBER_OF_LINES; i++ ){ //NUMBER_OF_LINES = num of spokes
    g2d.drawLine(0,0,0,radius);
    g2d.rotate(2*Math.PI/NUMBER_OF_LINES);
    }
    Thanks again
    John.
     
  5. Jan 19, 2008 #4

    HallsofIvy

    User Avatar
    Staff Emeritus
    Science Advisor

    For what values of t?

    Yes, that will work.- except that you said you had "reversed" the y axis. If that is so, you want Y= 200- sin(t)* 200.

    No, it wont. t= 1 radian corresponds to [itex]180/\pi[/itex] degrees, smaller than 180 degrees. It's probably because you did not take into account that swapping of the Y axis. You want t going from 0 to [itex]2\pi[/itex] radians to cover a circle. Then [itex]\pi= 3.14[/itex] radians, approximately, will correspond to 180 degrees[/itex].

     
    Last edited: Jan 19, 2008
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?