我试图围绕Point旋转一个Rectangle并动态设置它的长度。这就是我到目前为止所做的:
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);
当我绘制形状时,它没有按预期运行,矩形宽度随着我移动Point而变化。我该怎么做呢?
答案 0 :(得分:2)
你误解了Rectangle2Ds的定义方式。对于Rectangle2D,我建议设置一个与point(直接)无关的长度,然后使用仿射变换来缩放它。
问题是Rectangle2D没有像你想象的那样在(x1,y1)和(x2,y2)之间定义;它是(x1,y1)和(Δx,Δy),或偏移。
更改您的代码以使用此功能:
Rectangle2D myRect = new Rectangle2D.Double(point.x, point.y, GameValues.ROPE_WIDTH, ropeLength);
或者它的一些排列,你应该清楚。