2

如果我有三点,让我们说:

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

如何沿着起点和终点之间的弧线找到点?

4

1 回答 1

2

更新:向量标有°。

圆(或圆弧)所在平面p的法线n°为

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 实现,您需要以弧度而不是度数指定角度。

于 2013-05-07T21:17:00.667 回答