在Java中找到给定一个顶点和角度的矩形的三个顶点

在Java中找到给定一个顶点和角度的矩形的三个顶点,java,math,Java,Math,在矩形基于中心旋转后,我有一个左上角顶点,我有角度(旋转角度)、宽度和高度。我试图找到矩形的其他三个顶点或矩形的中心 如何在java中找到矩形的其他三个顶点或中心 提前感谢答案取决于您的坐标约定。如果使用java处理图形,y轴可能与图像相反,但您应该自己检查。此外,通常的旋转角度θ的约定与图像中的相同,但在您的特定情况下可能是相反的 为了找到中心C,我们需要取已知点p的x坐标Px,加上0.5*cos(θ)*w,其中w是矩形的宽度。所以 Cx = Px + 0.5 * (cos(theta) *

在矩形基于中心旋转后,我有一个左上角顶点,我有角度(旋转角度)、宽度和高度。我试图找到矩形的其他三个顶点或矩形的中心

如何在java中找到矩形的其他三个顶点或中心


提前感谢

答案取决于您的坐标约定。如果使用java处理图形,y轴可能与图像相反,但您应该自己检查。此外,通常的旋转角度θ的约定与图像中的相同,但在您的特定情况下可能是相反的

为了找到中心C,我们需要取已知点p的x坐标Px,加上0.5*cos(θ)*w,其中w是矩形的宽度。所以

Cx = Px + 0.5 * (cos(theta) * w - sin(theta) * h)
同样地

Cy = Py - 0.5 * (sin(theta) * w + cos(theta) * h)
如果y轴反转,0.5前面的负数应该是正数,如果旋转方向反转,两个θ前面都应该是负数

由于角度是以度为单位的,所以应该记住将其转换为弧度,以便与java.Math一起使用-类似如下:

double cx = px + 0.5 * (Math.cos(Math.toRadians(theta)) * w + Math.sin(Math.toRadians(theta)) * h);
实际上,您不需要中心来查找其余三个角:

P2x = Px + cos(theta) * w
P2y = Py - sin(theta) * w

P3x = Px + cos(theta) * w - sin(theta) * h
P3y = Py - (sin(theta) * w + cos(theta) * h)

P4x = Px + sin(theta) * h
P4y = Py - cos(theta) * h
P2是右上角,P3是与p相对的角,P4是左下角


这是一道数学题。你将如何在纸上解决它?@AnmolSinghJaggi。我的数学不是很好。如果你有一个数学解,请告诉我,我会尝试用Java来做。@gopi我假设你也知道矩形的宽度和高度。当矩形为0度时,首先查找所有顶点的坐标。然后,使用以下公式将4个顶点的坐标旋转角度:这有帮助吗@gopi在这种情况下,了解矩形是如何旋转的很有帮助。也就是说,如果矩形旋转23度,那么是东偏北23度还是北偏东23度?要使矩形在任何情况下恢复到0度的状态,只需将其反向旋转即可。也就是说,如果一个矩形旋转10度,并且您有左上角顶点,只需将左上角顶点旋转-10度,使左上角顶点现在为0度,谢谢。你的解决方案帮助我解决了这个问题。