如何在3D给定中心沿着弧线找到点,开始&终点+半径+中心角?

时间:2013-05-07 20:59:04

标签: math geometry angle points

如果我有三分,那就说:

start: (14.5, 10.1, 2.8)
end: (-12.3, 6.4, 7.7)
center: (0, 0, 0)

以下已确定的其他信息:

Radius: 15
Center Angle: 109 degrees
Arc (from Pt A - Pt B): 29

如何在起点和终点之间沿弧线查找点?

1 个答案:

答案 0 :(得分:1)

更新:向量标有°。

圆(或弧)所在的平面 p 的正常

n° = cross product of start°, end°

p 包含满足等式的所有点

dot product of n° and X° = 0
// ^^^ This is only for completeness, you needn't calculate it.

现在我们想要两个正交单位向量位于 p 中:

X° = start° / norm(start°)
Y° = cross_prod(n°, start°) / norm(cross_prod(n°, start°))

(where norm(X°) is sqrt(x[1]^2 + x[2]^2 + x[3]^2),
 and by dividing a vector V° by a scalar S I mean dividing each vector component by S:
 V° / S := (V°[1]/S, V°[2]/S, V°[3]/S)

在二维坐标中,我们可以用参数化

绘制一个圆
t -> 15*(cos(t), sin(t)) = 15*cos(t) * X° + 15*sin(t) * Y°
where X° = (1, 0) and Y° = (0, 1).

现在在平面 p 中的3d中,有两个正交单位向量,我们可以类比地做

t -> 15*cos(t) * X° + 15*sin(t) * Y°
where X°, Y° as defined before, and t goes from 0 to 109 degrees.

对于 t = 0 ,我们得到点 start°。对于 t = 109 ,我们应该获取 end°。如果出现这种情况,请将更改为 -Y°。对于0到109之间的t,我们得到 start° end°之间的弧。

根据你的sin / cos实现,你需要以弧度为单位指定角度,而不是度数。