我需要在 JavaScript 中编写一个函数,用于计算绕原点旋转的角度(以度为单位),这是将点定位在直线顶部所需的。点(以及旋转)由 x 和 y 坐标定义。一条线由属性 startX、startY、endX、endY 定义。
感谢您的时间和帮助!
我认为这个问题可以用三角学来解决,但我不知道如何解决。
点的位置、原点或线的坐标是单独的。我想找到的是这样的函数的数学实现:
function calculateAngle(point, line, rotationOrigin) {
/* The things i know:
- point.x, point.y
- rotationOrigin.x, rotateOrigin.y
- line.startX, line.startY, line.endX, line.endY
*/
return angleToFind;
}
在这里提问时要做的第一件事是在这里搜索给出的答案:
https://stackoverflow.com/search?q=圆+线+交点
https://stackoverflow.com/questions/1073336/circle-line-segment-collision-detection-algorithm
https://stackoverflow.com/questions/13053061/circle-line-intersection-points
对于您的问题,请注意可能有两种解决方案(圆的“割线”)、一种解决方案(“切线”)或没有解决方案(圆的外部线)
要找到角度,假设您有解“S1(s1x, s1y)”。您可以形成向量circle-center到starting-point和circle-center到S1。
再次搜索该网站:
https://stackoverflow.com/search?q=angle+ Between+vectors 你可以得到那个角度。如果您使用其他解决方案 S2,您会得到不同的角度。您可以选择逆时针方向。