给定一个点(pX,pY)和一个具有已知中心(cX,cY)和半径(r)的圆,在圆上最接近(pX, pY)?
我有一些代码类型的工作,但它涉及将圆转换为形式为(x-cX)^ 2 +(y-cY)^ 2 = r ^ 2(其中r为半径)的方程式,并使用该方程式从点(pX,pY)到(cX,cY)的直线的方程式,以创建要求解的二次方程。
一旦我消除了错误,它就可以解决,但这似乎是一个微不足道的解决方案。
用合适的“数学”语言,其中P是点,C是中心,R是半径:
V = (P - C); Answer = C + V / |V| * R;
| V | 是V的长度。
好的好的
double vX = pX - cX; double vY = pY - cY; double magV = sqrt(vX*vX + vY*vY); double aX = cX + vX / magV * R; double aY = cY + vY / magV * R;
易于扩展到> 2维。