我有以下参数
如何检查点是否位于矩形内?
任何指针都将非常感激。感谢。
答案 0 :(得分:5)
基本检查
如果您的矩形未旋转,则问题仅限于检查Point(x,y)是否在某个范围之间
(rectangle.x, rectangle.x + rectangle.width)
(rectangle.y, rectangle.y + rectangle.height)
添加轮播
当旋转矩形时,您可以进行反向旋转以使该点处于“未旋转状态”并进行上一次检查。
如何“取消旋转”这一点
好。如果您的矩形旋转27º,则“非旋转”必须为-27º(从相同的旋转中心点开始)。
如何旋转给定旋转中心点的点?
嗯,你必须:
原点旋转
你必须制作矩阵乘法Ax。其中A是矩阵,x是要旋转的点的(x,y)向量。
Matrix A构建为this way
答案 1 :(得分:0)
如果你可以使用awt,你可以创建一个Shape实例然后使用:Shape.contains(Point2D p)。
文档在这里:http://docs.oracle.com/javase/1.5.0/docs/api/index.html?java/awt/Graphics.html Java 2D教程在这里:http://java.sun.com/developer/technicalArticles/GUI/java2d/java2dpart1.html#1
HTH
答案 2 :(得分:0)
将所有坐标转换为旋转参考坐标系,其中矩形位于中心并沿轴对齐。然后检查坐标范围。
要在帧之间进行转换,请使用以下公式:http://en.wikipedia.org/wiki/Rotating_reference_frame#Relation_between_positions_in_the_two_frames
P.S。对不起,此链接更适合静态情况: http://en.wikipedia.org/wiki/Rotation_(mathematics)#Matrix_algebra