给定一个点(pX,pY)和一个具有已知中心(cX,cY)和半径(r)的圆,你可以找到最短的代码量来找到最接近(pX的圆上的点) pY)?
我有一些代码工作,但它涉及将圆转换为形式的方程(x - cX)^ 2 +(y - cY)^ 2 = r ^ 2(其中r是半径)并使用方程从点(pX,pY)到(cX,cY)的线,以创建要求解的二次方程.
一旦我解决了它会做的错误,但它似乎是一个不优雅的解决方案.
其中P是点,C是中心,R是半径,用合适的"mathy"语言:
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维.
我会从中心到点做一条线,并且在那个图形穿过圆圈的地方进行计算oO我觉得不那么困难