craig.durnin.1 0 Newbie Poster

This is quite complicated to explain, so I will do my best, sorry if there is anything I missed out, let me know and I will rectify it.

My question is, I have been tasked to draw this shape,

This is to be done using C++ to write code that will calculate the points on this shape.

Important details.

User Input - Centre Point (X, Y), number of points to be shown, Font Size (influences radius)

Output - List of co-ordinates on the shape.

The overall aim once I have the points is to put them into a graph on Excel and it will hopefully draw it for me, at the user inputted size!

I know that the maximum Radius is 165mm and the minimum is 35mm. I have decided that my base [Font Size][1] shall be 20. I then did some thinking and came up with the equation.

Radius = (Chosen Font Size/20)*130. This is just an estimation, I realise it probably not right, but I thought it could work at least as a template.

I then decided that I should create two different circles, with two different centre points, then link them together to create the shape. I thought that the INSIDE line will have to have a larger Radius and a centre point further along the X-Axis (Y staying constant), as then it could cut into the outside line.*

*(I know this is not what it looks like on the picture, just my chain of thought as it will still give the same shape)

So I defined 2nd Centre point as (X+4, Y). (Again, just estimation, thought it doesn't really matter how far apart they are).

I then decided Radius 2 = (Chosen Font Size/20)*165 (max radius)

So, I have my 2 Radii, and two centre points.

This is my code so far (it works, and everything is declared/inputted above)

for(int i=0; i<=n; i++) //output displayed to user
Xnew = -i*(Y+R1)/n; //calculate x coordinate
Ynew = pow((((Y+R1)*(Y+R1)) - (Xnew*Xnew)), 0.5); //calculate y coordinate


 for(int j=0; j<=n; j++)//calculation for angles and output displayed to user
Xnew2 = -j*(Y+R2)/((n)+((0.00001)*(n==0))); //calculate x coordinate
Ynew2 = Y*(pow(abs(1-(pow((Xnew2/X),2))),0.5));
if(abs(Ynew2) <= R1)
    cout<<"\n("<<Xnew2<<", "<<Ynew2<<")"<<endl;

I am having the problem drawing the crescent moon that I cannot get the two circles to have the same starting point?

I have managed to get the results to Excel. Everything in that regard works. But when i plot the points on a graph on Excel, they do not have the same starting points. Its essentially just two half circles, one smaller than the other (Stops at the Y axis, giving the half doughnut shape).

If this makes sense, I am trying to get two parts of circles to draw the shape as such that they have the same start and end points.

If anyone has any suggestions on how to do this, it would be great, currently all I am getting more a 'half doughnut' shape, due to the circles not being connected.

So. Does anyone have any hints/tips/links they can share with me on how to fix this exactly?

Thanks again, any problems with the question, sorry will do my best to rectify if you let me know.