Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回Java中的旋转矩形_Java_Collision Detection_Rectangles - Fatal编程技术网

返回Java中的旋转矩形

返回Java中的旋转矩形,java,collision-detection,rectangles,Java,Collision Detection,Rectangles,我在游戏中使用Java矩形,以便使用intersects方法检查对象之间的碰撞。据我所知,如果其中一个物体旋转,这是不可能做到的 例如,游戏中的一个物体旋转了65°。我该如何检查此对象上的碰撞?有没有一种方法可以将旋转添加到它的矩形中?如果没有,是否有一种方法可以在不使用矩形(例如像素颜色)的情况下检查碰撞?也许您应该提供有关项目的更多信息,甚至可以向我们展示几行代码。无论如何,如果使用笛卡尔平面,旋转点的一种方法是: public Point ruota(double alpha, P

我在游戏中使用Java矩形,以便使用intersects方法检查对象之间的碰撞。据我所知,如果其中一个物体旋转,这是不可能做到的


例如,游戏中的一个物体旋转了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中已经有一个类了,我以为您是在使用它,而不是编写自己的类。