在Three.js中沿SplineCurve3 / TubeGeometry的特定点的距离?

时间:2013-05-20 13:13:14

标签: three.js

我目前正试图找到Three.js中SplineCurve3的特定点的距离。例如......

enter image description here

上述SplineCurve3已由4个预定点构成; a,b,c和d。要沿曲线找到一个点,我可以使用getPoint method in the curve class并沿曲线提供一个值(t)(在0之间 - 开始[a] - 和1 - 结束[d])。

我遇到的问题是我需要找到用于构造曲线的中间点(b和c)的t值。

实际上,我想反过来getPoint。我想沿着路径传递一个点并从头开始给出t(距离)。

我该怎么做?我无法解决这个问题!

感谢任何和所有帮助。

2 个答案:

答案 0 :(得分:1)

如果我的记忆正确地为我服务,SplineCurve3是一个catmull-rom样条,这意味着在a = 0,b = 1/3,c = 2/3,d = 3/3时的t值。

来源中的这个广义公式为t = (point number) / (number of points - 1) https://github.com/mrdoob/three.js/blob/dev/src/extras/curves/SplineCurve3.js#L19

答案 1 :(得分:0)

它不是get_point的反转(当然有可能),但也许你可以创建SplineCurve3,其中最后一个点是你要查找的长度然后简单得到它的长度。然后你可以将这个新长度与原始长度进行比较,得到[0..1]值。如果这个解决方案没有奖励你,我可以查看源样条。