在最接近给定点的圆上找到点的最佳方法
问题内容:
给定一个点(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维。