Search code examples
geometryautomatic-ref-countingcnc

How to calculate points y position on arc? When i have radius, arcs starting and ending points


I'm trying to write a program on CNC. Basically I have circular arc starting x, y , radius and finishing x, y also I know the direction of the arc clockwise or cc. So I need to find out the value of y on the arc at the specific x position. What is the best way to do that? I found similar problem on this website here. But i not sure how to get angle a.

sample


Solution

  • At first you have to find circle equation. Let's start point Pst = (xs,ys), end point Pend = (xend,yend)

    For simplicity shift all coordinates by (-xs, -ys), so start point becomes coordinate origin.

    New Pend' = (xend-xs,yend-ys) = (xe, ye), new 'random point' coordinate is xr' = xrandom - xs, unknown circle center is (xc, yc)

    xc^2 + yc^2 = R^2    {1}
    (xc - xe)^2 + (yc-ye)^2 = R^2  {2}  //open the brackets
    xc^2 - 2*xc*xe + xe^2 + yc^2 - 2*yc*ye + ye^2 = R^2    {2'}
    subtract {2'} from {1}
    2*xc*xe - xe^2  + 2*yc*ye - ye^2 = 0    {3}
    yc =  (xe^2 + ye^2 - 2*xc*xe) / (2*ye) {4}
    substitute {4} in {1}
    xc^2 + (xe^2 + ye^2 - 2*xc*xe)^2 / (4*ye^2) = R^2 {5}
    solve quadratic equation {5} for xc, choose right root (corresponding to arc direction), find yc
    
    having center coordinates (xc, yc), write
    yr' = yc +- Sqrt(R^2 -(xc-xr')^2) //choose right sign if root exists
    and finally exclude coordinate shift
    yrandom = yr' + ys