我认为我的问题类似于:将对象的旋转方向旋转到THREE.JS中的样条点切线,但是我无法正确访问jsfiddle并且我在解释的第二部分中遇到了困难.
基本上,我创建了这个jsfiddle:http://jsfiddle.net/jayfield1979/qGPTT/2/,它演示了一个简单的立方体,遵循由样条曲线创建的路径SplineCurve3.使用标准的TrackBall鼠标交互进行导航.
沿着路径定位立方体很简单.但是我有两个问题.
首先,我使用spline.getTanget( t )where t是路径上的位置,以使立方体旋转(Y轴仅为UP).我想我错过了一些东西,因为即使我提取.y了所提供的切线的属性,旋转仍然显得不合适.是否需要进行一些正规化?
其次,沿着路径的速度变化很大,显然在创建更紧凑的曲线时会堆积更多的点,但我想知道有没有办法重构路径以更均匀地分布点之间的空间?我遇到了这个reparametrizeByArcLength功能,但很难找到如何使用它的解释.
如果对数学假人有任何帮助或解释,我们将非常感激.
我有一个复杂的问题,它涉及对我不自信的数学的理解.
一些轻微的背景可能有所帮 我正在为儿童建立一个3D训练模拟器,它将使用WebGL在浏览器中运行.我正在尝试创建一个点网络来放置轨道资产(见图)并为列车移动提供参考.
为了帮助解释我的问题,我创建了一个可视化表示,因为我是一个可以编写脚本而不是程序员或数学家的设计师:

基本上,我有3个形状(图A,B和C),虽然它们有宽度,但可以表示为A和曲线(B和C)的直线.曲线B和C从A导出(弯曲修改),因此长度(l)都是112.曲线(B和C)各自的半径(r)为285.5,(a)角度弯曲在22.5°.
每个形状(A,B和C)都有一个注册点(起始点),由每个形状的绿色框的中心表示.
我要做的是创建一个从0,0开始的"轨道"网络(使用标准的笛卡尔坐标).
我的问题是在曲线后放置下一个元素的位置.如果它是直线轨道那么没有问题,因为我可以使用长度作为沿y轴的恒定偏移,但这将是无聊的,所以我需要添加曲线.
图D.演示了一个可能的轨道布局示例,但请理解我不是在寻找静态答案(基于图像中所有位置的位置),我需要一个可以应用的公式,无论我如何配置跟踪.
使用图D.我试图找出在第一个弯曲元件之后放置第二个弯曲元件的位置.我使用公式绘制了圆的圆周点,给出了它的中心坐标和半径(图E.).
我有点1,因为这只是设置直线长度(y位置)的情况.我可以很容易地计算圆的中心,因为这只是偏移的y位置,半径(r)的偏移(x位置)和角度(a)总是22.5°(顺便说一下,它被转换为Radians根据配方要求).
在通过公式传递值后,我没有得到正确的结果,因为公式假设我从3点开始逆时针工作,所以我不得不从(a)中扣除180并将其转换为Radians以获得预期结果.
这确实有效,如果我想创建一个180°的曲线,我可以使用相同的中心点,每次从角度减去22.5°.大.但我想要一个更加动态的轨道布局,如图.D&E
那么,我将如何进入图E中的工作点5,因为它代表了该曲线段的中心点?我根本不知道.
另外,作为一个额外的问题,这是正确的做法,还是我过于复杂的事情?
这个问题是阻止我构建游戏的唯一问题,正如你可以理解的那样,它有点大,所以我感谢任何人提前做出的贡献.
请查看下面的图片,以获得我的问题的直观线索:

我有点1和2的坐标.它们是通过使用其他可用信息的公式得出的(参见问题:如何计算圆知道半径和中心点的点).
我现在需要做的(与轨道结构分开)绘制点1和2之间的绿色点.
这样做的最佳方法是什么?我的数学技能不是我必须承认的最好的技能,而且我确信这是一个非常简单的公式,我无法解决(从我的研究中)使用或如何实施.