当前位置: 首页 > 知识库问答 >
问题:

根据另一个矩形的旋转移动矩形的位置

百里业
2023-03-14

我有两个带枢轴的矩形,

我需要根据红色矩形的旋转来附加绿色矩形的位置

结果应该如图所示:

我尝试了不同的公式,但没有成功

红色矩形:

x=500, y=100, width=200, height=500, pivotX=100, pivotY=400

绿色矩形:

x=450, y=150, width=100, height=400, pivotX=50, pivotY=50

我尝试了这样的方法:

var radians = (Math.PI / 180) * red.degree;
green.x += red.pivotX * Math.cos(radians) - red.pivotY * Math.sin(radians);
green.y += red.pivotX * Math.sin(radians) + red.pivotY * Math.cos(radians);

非常感谢所有帮助过我的人!

共有1个答案

田鸿彩
2023-03-14

矩形的枢轴最初位于位置(x 透视 X,y 透视 Y)。取从红色枢轴点指向绿色枢轴点的矢量,即

vx = green.x + green.pivotX - red.x - red.pivotX;
vy = green.y + green.pivotY - red.y - red.pivotY;

这就是你旋转的向量:

wx = Math.cos(radians)*vx - Math.sin(radians)*vy;
wy = Math.sin(radians)*vx + Math.cos(radians)*vy;

然后,您可以使用旋转的 w 而不是原始的 v 来确定绿色矩形的位置:

green.x += wx - vx;
green.y += wy - vy;
 类似资料:
  • 我有两个矩形:红色和绿色。对于它们中的每一个,我有以下信息: 中心点( 和 坐标)。 旋转角度 宽度和高度 矩形将始终以正坐标移动。编辑:没有坐标可以是负的:矩形总是位于正坐标。因此,中心永远不会是(0,0)。 问题 我有一个起始位置。为了简化示例,假设我的红色和绿色矩形的位置如下: 现在,我使用0º和90º之间的角度φ旋转红色矩形。但是,绿色矩形需要旋转并保持其相对于红色矩形的位置。绿色矩形不仅

  • 在上面的图片中,我展示了两个矩形 矩形1,其x可以从-900到13700不等,Y可以从-600到6458 矩形2,其坐标X可以从0到3000变化,而y可以从0到2000变化 同样:矩形2的起点位于左上角位置(0,0),而矩形1的起点位于左上角位置(宽度/2,高度/2)。 我需要做的是:使用缩放或平移将矩形1的点转换为矩形2的点。 那么,为了将矩形1的坐标转换为矩形2的坐标,< code>x和< c

  • 我刚开始使用JavaFX,有一个问题。在我的项目中,我想使用旋转矩形。但矩形只围绕其中心旋转,我希望它围绕其左上角旋转。 就像这张照片(从这里开始): 下面是我的项目中的一些代码: 在这种情况下,如果按下箭头键,矩形会旋转。

  • 我使用JavaSlick StateBaeedGame,并希望旋转我的矩形我的碰撞,我知道这是可以做的视觉目的使用图形或Graphics2D对象,但不修改矩形本身,最初列出的变量和图形方法中调用的矩形不旋转,使事情更清楚这里是一些代码: 当我加载GUI时,矩形rectTwo将显示为旋转,但它实际上并没有旋转,如果我测试碰撞,矩形仍然为0度。 那么,如何让矩形变量改变其角度呢?

  • 我有两个矩形,其中一个是另一个的剪裁。现在我想围绕剪切矩形的中心旋转较大的矩形并调整x / y值。 如何计算旋转后的新x/y值? 我只想绕着小盒子的中心旋转大盒子的x/y。因此,较大盒子的x/y点相对于较小盒子的顶部/左侧点。我有小盒子的宽度和高度,所以我可以计算大盒子相对于小盒子中心的x/y点。旋转的角度以度为单位。旋转可以是任何角度,例如10度。

  • 问题内容: 我到处搜索,但找不到答案。 如何在Java中旋转矩形? 这是我的一些代码: 我尝试了g2d.rotate(100D); 但它没有用。提前致谢。 这是我编辑的代码: 问题答案: 对于图像,必须将Graphics2D的drawImage方法与相对的AffineTransform一起使用。 对于形状,您可以旋转Graphics2D本身: 顺便说一句,您应该重写paintComponent方法