红色=X轴,绿色=Y轴,蓝色=Z轴
品红色向量=原点-->一些X,Y,Z点
品红色立方体=两个品红向量的端点的平均值(有更好的名称吗?)
白色向量=两个品红向量的叉积(为了显示而扩展,实际向量已被规格化)
青色立方体对象=旋转失败
我以前使用Away3D和Papervision;在这些库中,将欧拉角应用于对象的rotationX、rotationY或rotationZ属性会在本地旋转对象,就像它位于原点一样,而不考虑其实际位置。在Three.js中,情况并非如此。修改对象的rotation.x和rotation.y属性会产生一种奇怪的效果,似乎对象在Z轴上有点倾斜。更令人困惑的是,在对象停留在原点时发生这种情况。我认为可能使用四元数-->矩阵或轴/角度-->矩阵函数可以解决我的问题,但没有结果。看来有一个核心概念我没有领会。
无论如何,我想做的是将立方体定向到叉积向量(白色),以使立方体的顶部面向该向量的方向。然后我想沿着同一轴旋转立方体。我附加的图像显示了尝试实现这个结果比我想象的要多得多的小时。我的代码大致如下:
axis = Vector3.cross(a, b)
axis.normalize()
angle = 45 * TO_RADIANS;
quat = AxisAngle2Quaternion(axis, angle)
rot = Quaternion2Matrix(quat)
cube.matrix = rot
提前感谢您的帮助。
编辑:开始悬赏
也许我误解了它该如何工作。这是另一张图片:
我是否错误地认为这个品红色向量是轴,而橙色箭头表示根据角度围绕此轴旋转?无论如何,我想基于某个方向向量定位青色立方体并旋转它。我做错了什么!?