如何在圆周长上找到一定距离的点?

How to find points of certain distance on a circle perimeter?

假设,(x1, y1)是圆周长上的一个点(x-420)^2 + (y-540)^2 = 260^2圆周长为d(欧几里得)的两点是什么(x1, y1)

使用三角函数

假设您正在使用一种编程语言。答案是使用伪代码。

使用 radians 沿圆的距离 d 可以表示为角度 a 计算为 a = d / r(其中 r 是半径)

给定圆上的任意一点。 (x1-420)^2 + (y1-540)^2 = 260^2 (注意假设x1,y1已知)我们可以提取的中心是x = 420,y = 540, 和半径 r = 260

那么angular距离d就是a = d / 260.

大多数语言都有函数atan2来计算向量的角度,我们可以得到从圆心到任意点的角度ang = atan2(y1 - 540, x1 - 420)yx)

因此,从任意点 {x1, y1} 到点 d 沿圆(ang1 , ang2)的距离的绝对角度计算为...

// ? represents known unknowns
x = 420
y = 540
r = 260
d = ?
x1 = ?
y1 = ?
ang = atan2(y1 - y, x1 - x)
ang1 = ang + d / r
ang2 = ang - d / r

点的坐标 (px1, py1, px2, py2) 计算为...

px1 = cos(ang1) * r + x
py1 = sin(ang1) * r + y

px2 = cos(ang2) * r + x
py2 = sin(ang2) * r + y

向量代数

这个问题也可以用向量代数求解,不需要三角函数atan2

计算表示角度的单位向量a = d / r,然后以圆为原点,在两个方向上使用单位向量变换(旋转)圆上的点。将点转换回圆圈的原始位置以获得解决方案。