繁体   English   中英

Java-旋转Rectangle2D并设置长度?

[英]Java - Rotate Rectangle2D and set Length?

我试图围绕一个点旋转一个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移到周围而改变。 如何正确执行此操作?

您误解了Rectangle2D的定义方式。 对于Rectangle2D,我建议设置一个与点不直接相关的长度(直接),然后使用仿射变换对其进行缩放。

问题是,Rectangle2D没有像您认为的那样在(x1,y1)和(x2,y2)之间定义; 它是(x1,y1)和(Δx,Δy)或偏移量。

更改您的代码以使用此代码:

Rectangle2D myRect = new Rectangle2D.Double(point.x, point.y, GameValues.ROPE_WIDTH, ropeLength);

或它的某些排列,您应该保持清醒状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM