返回Java中的旋转矩形
我在游戏中使用Java矩形,以便使用intersects方法检查对象之间的碰撞。据我所知,如果其中一个物体旋转,这是不可能做到的返回Java中的旋转矩形,java,collision-detection,rectangles,Java,Collision Detection,Rectangles,我在游戏中使用Java矩形,以便使用intersects方法检查对象之间的碰撞。据我所知,如果其中一个物体旋转,这是不可能做到的 例如,游戏中的一个物体旋转了65°。我该如何检查此对象上的碰撞?有没有一种方法可以将旋转添加到它的矩形中?如果没有,是否有一种方法可以在不使用矩形(例如像素颜色)的情况下检查碰撞?也许您应该提供有关项目的更多信息,甚至可以向我们展示几行代码。无论如何,如果使用笛卡尔平面,旋转点的一种方法是: public Point ruota(double alpha, P
例如,游戏中的一个物体旋转了65°。我该如何检查此对象上的碰撞?有没有一种方法可以将旋转添加到它的矩形中?如果没有,是否有一种方法可以在不使用矩形(例如像素颜色)的情况下检查碰撞?也许您应该提供有关项目的更多信息,甚至可以向我们展示几行代码。无论如何,如果使用笛卡尔平面,旋转点的一种方法是:
public Point ruota(double alpha, Point r){
double qx = r.x + (x - r.x) * Math.cos(alpha) - (y - r.y)* Math.sin(alpha);
double qy = r.y + (x - r.x) * Math.sin(alpha) + (y - r.y)* Math.cos(alpha);
return new Point(qx, qy);
}
你有没有试过用铅笔和纸画两个长方形,一个旋转一个不旋转,然后想出一个算法?然后将其转换为您自己的相交方法。这就是大多数类似问题的解决方法。这能回答你的问题吗?我投票认为这是形状旋转的重复,因为如果你使用Java形状,矩形是一个特例,你有内置的碰撞检测,不管旋转。@gpash如果你想做得对,你需要线段相交:画两个拉长的矩形组成一个X,其中任何一个矩形的点都不在另一个矩形内。请注意,您需要线段,而直线相交是不够的:想象这些相同的线段,在顶部不接触茎的地方形成一个T。我以前没有处理过点,所以作为一个例子,这会创建一个旋转45°的矩形吗?矩形r=新矩形新点100100;r、 新增150、50点;r、 新增点200100;r、 添加新的点150、150;旋转需要旋转中心。您正在使用r作为中心,并且您的代码缺少参数x和y,即您正在旋转的点的坐标。@tucuxi如果您指的是我的代码,r是point类的实例:x和y不需要在此方法中定义。啊。java.awt中已经有一个类了,我以为您是在使用它,而不是编写自己的类。