Mob*_*Dev 7 math android discrete-mathematics game-physics
我正在尝试使用Surfaceview和画布绘制在Android中创建自定义组件.这些组件可以通过触摸来重新调整大小并且可以旋转.考虑创建一个图像视图,其顶部,右侧,底部和左侧边缘可通过触摸和拖动所需边缘进行扩展.我RectF用来保持组件的边界,对于旋转我正在使用canvas.rotate(angle, bounds.centerX(),bounds.centerY())方法.问题是在调整上边缘的大小时,Let,Right和Bottom边缘应该是固定的,如果旋转角度不是0度,我就无法修复它.我需要一个数学解决方案来找出旋转矩形相对于实际矩形边界的x,y坐标.
我可以借助一些图片来解释它.下图显示了两个矩形,其边界也是已知的并以相应的颜色显示.将Green Rect视为组件的初始边界,即.旋转-45度,中心为(10,10).现在重新调整矩形的上边缘,并在下面的图2中显示.

从图2可以看出,Y位置从6减小到4.旋转的矩形也以粉红色显示.请记住,当组件处于旋转角度-45度时,我正在调整大小,因此在拖动顶部边缘矩形的左,右和底部位置时不应更改.因此,图2的粉红色矩形应具有与图1的绿色矩形相同的左,右和底坐标.获得的和预期的矩形的比较如图3所示.

在图3中,黄色矩形是预期/需要输出.在得到的矩形粉红色向上偏移相比,绿色旋转矩形,并且是变化取决于旋转的角度.
如何计算黄色矩形的边界/中心.这样我可以正确实现组件的大小调整吗?让我知道是否有任何数学可以应用?
所需的点/坐标在图3中标记为红色圆圈.

本答案中的所有颜色均参考图 3。
\n\n如果我正确理解你的问题,你知道如何计算有关粉色矩形和绿色矩形的所有细节。因此,只需计算粉色矩形的一个角与绿色矩形的相应角之间的差异即可。将该差值(一个二元素向量,即x和y差值分别)添加到粉色矩形的中心,即可得到所需的黄色三角形中心。
\n\n如果您还需要计算粉红色矩形的尺寸,您可能需要在未旋转的坐标系中执行此操作。将绿色矩形与要向其延伸矩形的点的坐标一起,然后将它们向后旋转 +45\xc2\xb0。然后,您可以将矩形的高度扩展到您想要的值,这将为您提供蓝色矩形,并通过旋转获得粉红色矩形。
\n