我写了一个名为 Shape 的对象,它有一个 Point 代表 topLeftCorner,一个 Dimension 代表它的宽度和高度。要获得 topRightCorner,我可以简单地将宽度添加到 topLeftPoint.x。我用它们围绕它们的中心旋转一定程度。旋转后的问题是,我的intersects(Shape)
方法失败了,因为它不尊重形状的旋转。每个形状的旋转都是相同的。我当前的实现在我的形状对象中看起来像这样:
public boolean intersects(Shape s){
// functions returning a Point of shape s
return intersects(s.topLeft())
|| intersects(s.topRight())
|| intersects(s.bottomLeft())
|| intersects(s.bottomRight())
|| intersects(s.leftCenter())
|| intersects(s.rightCenter())
|| intersects(s.center());
}
public boolean intersects(Point p){
return p.x >= leftX()
&& p.x <= rightX()
&& p.y >= topY()
&& p.y <= bottomY();
}
基本上我需要像rotatedLeftX()
or这样的功能rotatedTopRight()
才能正常工作。同样对于那个计算,我认为在旋转 90 之前的 topLeft 点何时变成 topRight 并不重要......