我想将一个基于y轴对齐,底部位于零点的物体旋转以面对目标点,但遇到了一些困难。
我已经完成了以下步骤: 给定轴 A
我已经完成了以下步骤: 给定轴 A
- 计算我的位置和观察位置之间的距离:D
- 创建方向向量:V = D.normalize()
- 查找正确的向量:R = A cross D
- 查找上方向向量:U = D cross R
- 查找上向量与方向之间的角度:ANGLE = acos((U dot D) / (U.length * D.length))
- 按比例在每个轴上旋转该角度
Vector3 distance = new Vector3(from.x, from.y, from.z).sub(to.x, to.y, to.z);
final Vector3 axis = new Vector3(0, 1, 0);
final Vector3 direction = distance.clone().normalize();
final Vector3 right = (axis.clone().cross(direction));
final Vector3 up = (distance.clone().cross(right));
float angle = (float) Math.acos((up.dot(direction)/ (up.length() * direction.length())));
bondObject.rotateLocal(angle, direction.x , direction.y, direction.z);