# Formula for.G02 G03 arc centre (x,y)

11 Sep 2018 08:06 #117321 by berntd
I am getting rusty with the math...

So:
Can someone please give me the formulas for the x and y for a circle
based on the start x,y end x,y and radius?

I know I need to solve 2 simultaneous equations to get the answer but they are quadratic and I just can't do that anymore

11 Sep 2018 20:32 #117358 by Grotius

11 Sep 2018 21:46 #117364 by berntd
Hmm, thanks but it seems that calculates the arc length not the centre point coordinates.

12 Sep 2018 14:19 #117400 by andypugh
The equation of a circle centred on the origin is
x^2 + y^2 = r^2

For a circle not centred on the origin:

(x -a)^2 + (y - b)^2 = r^2
where (a,b) is the centre point.

We have two simultaneous equations

(Sx-Cx)^2 + (Sy-Cy)^2 = r^2
(Ex-Cx)^2 + (Ey-Cy)^2 = r^2

And by cheating, and putting this into Matlab, I got the surprisingly complicated:

Cx = (Ex^2 + Ey^2 - Sx^2 - Sy^2 - (Ey*(Ex^2*Ey + Ey*Sx^2 + Ex^2*Sy - Ey*Sy^2 - Ey^2*Sy + Sx^2*Sy + Ex*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) - Sx*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) + Ey^3 + Sy^3 - 2*Ex*Ey*Sx - 2*Ex*Sx*Sy))/(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2) + (Sy*(Ex^2*Ey + Ey*Sx^2 + Ex^2*Sy - Ey*Sy^2 - Ey^2*Sy + Sx^2*Sy + Ex*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) - Sx*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) + Ey^3 + Sy^3 - 2*Ex*Ey*Sx - 2*Ex*Sx*Sy))/(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2))/(2*Ex - 2*Sx)

Cy = (Ex^2*Ey + Ey*Sx^2 + Ex^2*Sy - Ey*Sy^2 - Ey^2*Sy + Sx^2*Sy + Ex*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) - Sx*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) + Ey^3 + Sy^3 - 2*Ex*Ey*Sx - 2*Ex*Sx*Sy)/(2*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2))

For one solution and

Cx = (Ex^2 + Ey^2 - Sx^2 - Sy^2 - (Ey*(Ex^2*Ey + Ey*Sx^2 + Ex^2*Sy - Ey*Sy^2 - Ey^2*Sy + Sx^2*Sy - Ex*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) + Sx*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) + Ey^3 + Sy^3 - 2*Ex*Ey*Sx - 2*Ex*Sx*Sy))/(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2) + (Sy*(Ex^2*Ey + Ey*Sx^2 + Ex^2*Sy - Ey*Sy^2 - Ey^2*Sy + Sx^2*Sy - Ex*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) + Sx*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) + Ey^3 + Sy^3 - 2*Ex*Ey*Sx - 2*Ex*Sx*Sy))/(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2))/(2*Ex - 2*Sx)

Cy = (Ex^2*Ey + Ey*Sx^2 + Ex^2*Sy - Ey*Sy^2 - Ey^2*Sy + Sx^2*Sy - Ex*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) + Sx*(-(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2)*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2 - 4*r^2))^(1/2) + Ey^3 + Sy^3 - 2*Ex*Ey*Sx - 2*Ex*Sx*Sy)/(2*(Ex^2 - 2*Ex*Sx + Ey^2 - 2*Ey*Sy + Sx^2 + Sy^2))

For the other.

Trigonometry based on the observation that the centre points lie on the perpendicular bisector of the line joining start to end points might give a simpler solution.

12 Sep 2018 19:17 #117421 by Grotius
Can Bertd make a simple drawing of his 2 simultaneous equations ? Then we can put it into Matlab and see what happens.

12 Sep 2018 19:32 #117424 by andypugh

Grotius wrote: Can Bertd make a simple drawing of his 2 simultaneous equations ? Then we can put it into Matlab and see what happens.

The two simultaneous equations are in my post. Solve for Cx and Cy for known Sx, Sy, Ex, Ey and r.

12 Sep 2018 21:38 - 12 Sep 2018 21:42 #117432 by berntd
Haha

Yes, that is pretty good.
Bernt = me, has pages full of scribbles trying to solve exactly those 2 equations as above. That is why I had to give up as I just could (no longer) solve them.
You would never believe that Idid 5th year mathematics at University.
In those days, there was no Matlab.

But we digress...
There are 2 possible answers as 2 circles can go through the same 2 points with a give radius (also obvious from the quadratic equations).

I have since changed tack.
I am evaluating whether using the 2 circles and triangles formed by the centre to centre line and the intersecting 2 point line may help solve this problem.

I have not concluded that investigation yet.

Lots of tutorial videos all show how simple writing G-code is but none of them show any examples of arcs that are not nicely 90 degrees. HA!

Regards
Bernt
Last edit: 12 Sep 2018 21:42 by berntd.