如何在圆周长上找到一定距离的点?
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)
(注y
先 x
)
因此,从任意点 {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
,然后以圆为原点,在两个方向上使用单位向量变换(旋转)圆上的点。将点转换回圆圈的原始位置以获得解决方案。
假设,(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)
(注y
先 x
)
因此,从任意点 {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
,然后以圆为原点,在两个方向上使用单位向量变换(旋转)圆上的点。将点转换回圆圈的原始位置以获得解决方案。