我正在开发另一个 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;
}
}
正如您在图片中看到的,它不适用于快速移动的物体。有什么好的方法可以显示两点是否相互靠近?