林想知道你们中的任何人是否可以看看我的方法代码,并帮助我找出是什么原因造成的?这是一个简单的任务,可以确定是否两个矩形重叠/拦截/触摸海誓山盟。我在论坛上搜索并研究了分离轴测试/定理。有用。部分地。但是,当我有两个不具有相同尺寸的矩形时,会发生问题。 继承人的代码:故障排除方法
public boolean contains(MyRectangle2D x, MyRectangle2D y){
if(Math.abs(xAxisDistance(x, y)) - Math.abs(centerToPerimeterXDistance(x)) - Math.abs(centerToPerimeterYDistance(y)) > 0)
return false;
if(Math.abs(yAxisDistance(x, y)) - Math.abs(centerToPerimeterXDistance(x)) - Math.abs(centerToPerimeterYDistance(y)) > 0)
return false;
else
return true;
}
public double xAxisDistance(MyRectangle2D x, MyRectangle2D y){
return x.getXCenter() - y.getXCenter();
}
public double yAxisDistance(MyRectangle2D x, MyRectangle2D y){
return x.getYCenter() - y.getYCenter();
}
public double centerToPerimeterXDistance(MyRectangle2D x){
return x.getWidth()/2;
}
public double centerToPerimeterYDistance(MyRectangle2D x){
return x.getHeight()/2;
}
简而言之:我有两个IF-句子。一个检查x轴,另一个检查y轴。如果圆圈之间的距离小于0,它们会重叠。当圆圈具有相同的尺寸时,它可以正常工作,但如果一个圆圈的eksample的高度较大。它在远处时“重叠”。
任何可以促使我朝着正确的方向解决这个问题的输入是令人满意的!
我无法重现您的问题。可能你的错误是在代码的另一部分。 (也许在'MyRectangle2D'中有一个错误的getter或setter?) – Kayz
是的,那很可能。生病了看着它! – Surangie