我正在研究另一個3D遊戲引擎並且有以下問題。爲了提高性能,我想檢查兩個對象是靠近還是遠離對方。只有當它們彼此靠近時纔會發生碰撞檢測。如何顯示兩個對象是否在3D空間中移動
目前代碼使用兩個對象的位置來計算當前距離。然後移動有關速度矢量的兩個位置並計算預期距離。等等。
public class Model{
public boolean isApproaching(Model model) {
float [] otherPosition = model.getPosition();
float [] otherVelocity = model.getVelocity();
double currentDistance = Math.pow(this.position[0] - otherPosition[0], 2)
+ Math.pow(this.position[1] - otherPosition[1], 2)
+ Math.pow(this.position[2] - otherPosition[2], 2);
double expectedDistance = Math.pow(this.position[0] + this.velocityVector[0]/1000 - otherPosition[0] - otherVelocity[0]/1000, 2)
+ Math.pow(this.position[1] + this.velocityVector[1]/1000 - otherPosition[1] - otherVelocity[1]/1000, 2)
+ Math.pow(this.position[2] + this.velocityVector[2]/1000 - otherPosition[2] - otherVelocity[2]/1000, 2);
if(currentDistance < expectedDistance)
return false;
return true;
}
}
正如您在圖片中看到的,它不適用於快速移動的物體。有沒有什麼好的方法可以表明兩點是否相互移動?
我會嘗試使用他們的方向向量的叉積。要麼或解決他們的交點。 – Blender