一尘不染

在最接近给定点的圆上找到点的最佳方法

algorithm

给定一个点(pX,pY)和一个具有已知中心(cX,cY)和半径(r)的圆,在圆上最接近(pX, pY)?

我有一些代码类型的工作,但它涉及将圆转换为形式为(x-cX)^ 2 +(y-cY)^ 2 = r ^
2(其中r为半径)的方程式,并使用该方程式从点(pX,pY)到(cX,cY)的直线的方程式,以创建要求解的二次方程。

一旦我消除了错误,它就可以解决,但这似乎是一个微不足道的解决方案。


阅读 252

收藏
2020-07-28

共1个答案

一尘不染

用合适的“数学”语言,其中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维。

2020-07-28