Mat*_*ell 35 language-agnostic algorithm geometry
给定一个点(pX,pY)和一个具有已知中心(cX,cY)和半径(r)的圆,你可以找到最短的代码量来找到最接近(pX的圆上的点) pY)?
我有一些代码工作,但它涉及将圆转换为形式的方程(x - cX)^ 2 +(y - cY)^ 2 = r ^ 2(其中r是半径)并使用方程从点(pX,pY)到(cX,cY)的线,以创建要求解的二次方程.
一旦我解决了它会做的错误,但它似乎是一个不优雅的解决方案.
Mik*_*vey 62
其中P是点,C是中心,R是半径,用合适的"mathy"语言:
V = (P - C); Answer = C + V / |V| * R;
Run Code Online (Sandbox Code Playgroud)
其中| 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;
Run Code Online (Sandbox Code Playgroud)
易于扩展到> 2维.