今天我的问题是我希望一个物体转向另一个物体。就像地球绕太阳转。我用Java编程。
我将相机作为参考点(太阳),以及需要转动此参考点(地球)的物体。
我知道:
我希望在距离 d 的参考位置 pCam 周围旋转 a 角度后找到对象的新位置
你能帮助我吗?
答案 0 :(得分:0)
好的,我解决了我的问题,
我使用此功能以一个角度(以度为单位)旋转另一个点:
public SimpleVector rotateAround(SimpleVector center, SimpleVector point, float angle) {
SimpleVector newPos = new SimpleVector(point.x - center.x, 0, point.z - center.z);
newPos.x = (float) (newPos.x * Math.cos(angle) - newPos.z * Math.sin(angle));
newPos.z = (float) (newPos.x * Math.sin(angle) + newPos.z * Math.cos(angle));
newPos.x += center.x;
newPos.z += center.z;
return newPos;
}
为了记住对象的位置,我使用这段代码:
SimpleVector diff = this.getPosition().calcSub(ref);
SimpleVector s = rotateAround(center, ref, (float) angle);
s.x += diff.x;
// Rotation only on a plane (2 axis)
s.y = this.getPosition().y;
s.z += diff.z;
this.positioningObject(s);