Java - 旋转 Rectangle2D 并设置长度?
Java - Rotate Rectangle2D and set Length?
我试图围绕一个点旋转一个矩形并动态设置它的长度。这是我目前所拥有的:
Rectangle2D myRect = new Rectangle2D.Double(point.x - GameValues.ROPE_WIDTH, point.y, point.x + GameValues.ROPE_WIDTH, point.y + ropeLength);
AffineTransform at = AffineTransform.getRotateInstance(
Math.toRadians(rotation - 180), point.x, point.y);
rope = at.createTransformedShape(myRect);
当我绘制形状时,它的行为与预期不符,当我四处移动点时,矩形宽度会发生变化。我该如何正确执行此操作?
您误解了 Rectangle2D 的定义方式。对于 Rectangle2D,我建议设置一个与点无关的长度(直接),然后使用仿射变换对其进行缩放。
问题是 Rectangle2D 没有像您想象的那样定义在 (x1, y1) 和 (x2, y2) 之间;它是 (x1, y1) 和 (Δx, Δy),或偏移量。
更改您的代码以使用它:
Rectangle2D myRect = new Rectangle2D.Double(point.x, point.y, GameValues.ROPE_WIDTH, ropeLength);
或它的一些排列,你应该是清楚的。
我试图围绕一个点旋转一个矩形并动态设置它的长度。这是我目前所拥有的:
Rectangle2D myRect = new Rectangle2D.Double(point.x - GameValues.ROPE_WIDTH, point.y, point.x + GameValues.ROPE_WIDTH, point.y + ropeLength);
AffineTransform at = AffineTransform.getRotateInstance(
Math.toRadians(rotation - 180), point.x, point.y);
rope = at.createTransformedShape(myRect);
当我绘制形状时,它的行为与预期不符,当我四处移动点时,矩形宽度会发生变化。我该如何正确执行此操作?
您误解了 Rectangle2D 的定义方式。对于 Rectangle2D,我建议设置一个与点无关的长度(直接),然后使用仿射变换对其进行缩放。
问题是 Rectangle2D 没有像您想象的那样定义在 (x1, y1) 和 (x2, y2) 之间;它是 (x1, y1) 和 (Δx, Δy),或偏移量。
更改您的代码以使用它:
Rectangle2D myRect = new Rectangle2D.Double(point.x, point.y, GameValues.ROPE_WIDTH, ropeLength);
或它的一些排列,你应该是清楚的。