给定一个点 (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 的长度。
OK, OK
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 维。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)