java - 移动和旋转碰撞矩形

标签 java jpanel rectangles

我正在编写一个简单的游戏,或者看起来是这样,它具有随着鼠标移动而旋转矩形的功能。起初这似乎不是一个问题,但它却成了一个问题。矩形应该做的是当鼠标在面板上移动时围绕一个点旋转。

enter image description here

如果你看图片,当鼠标移动时,矩形会旋转。我知道您可以通过 Graphics2D 使用旋转功能。

g2d.rotate(angle, centerx, centery);

这不是很有帮助,因为我无法获取移动矩形的坐标。这会旋转整个图形!我怎样才能绘制这个矩形以便它做到这一点。我不知道如何开始。请帮忙。

最佳答案

更多的代码和上下文会很好,但基于当前的问题:您可以创建一个转换后的形状。特别是,RectangleRectangle2D 实现了Shape 接口(interface)。您可以创建一个 AffineTransform 来表示您当前对 Graphics 进行的旋转。所以代码的相关部分大致应该是这样的

Rectangle2D rectangle = ...
AffineTransform at = AffineTransform.getRotateInstance(
    angle, centerx, centery);
Shape rotatedRectangle = at.createTransformedShape(rectangle);
g2d.draw(rotatedRectangle);

您在标题中提到了“碰撞”。如果您打算在某种碰撞检测中使用此矩形,您应该注意,不可能直接使两个任意 Shape 对象相交。特别是,您不能将 ShaperotatedRectangle 与另一个 Shape otherRotatedRectangle 相交,而只能与 Rectangle otherRectangle 相交。如果这是一个问题,您有多种选择,但这更适合一个专门的问题。

关于java - 移动和旋转碰撞矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23459290/

相关文章:

Java - 防止多版本应用程序 split 代码库

java - Smooks EDI 解析 - 重复段

Java - Mac 上的屏幕尺寸

c# - 使用 Graphics.FillPath 奇怪地绘制 GraphicsPath

java - 使用 itext5 将文本添加到 PDF 中的矩形

java - 带有 gradle 的 Jersey 测试框架 - MessageBodyProviderNotFound

java - 框布局中的列标题

java - EventQueue 和 EventDispatch 错误

c# - 反向扩展类

java - Android 中 SQLite 数据库的安全性