# X,Y Coordinates Circle, Different Plane

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

CompuChip
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).

Hi CompuChip

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:
//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.rotate(2*Math.PI/NUMBER_OF_LINES);
}

Thanks again
John.

HallsofIvy
Homework Helper
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.
For what values of t?

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
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.

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.
No, it wont. t= 1 radian corresponds to $180/\pi$ 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 $2\pi$ radians to cover a circle. Then $\pi= 3.14$ radians, approximately, will correspond to 180 degrees[/itex].

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

Thank You
John

Last edited by a moderator: