如果我有三分,那就说:
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
如何在起点和终点之间沿弧线查找点?
答案 0 :(得分:1)
更新:向量标有°。
圆(或弧)所在的平面 p 的正常 n°是
n° = cross product of start°, end°
p 包含满足等式的所有点 X°
dot product of n° and X° = 0
// ^^^ This is only for completeness, you needn't calculate it.
现在我们想要两个正交单位向量 X°, Y°位于 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中,有两个正交单位向量 X°和 Y°,我们可以类比地做
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°更改为 -Y°。对于0到109之间的t,我们得到 start°和 end°之间的弧。
根据你的sin / cos实现,你需要以弧度为单位指定角度,而不是度数。