相对于旋转角度的矩形坐标 [英] Rectangle Coordinates With Respect To The Rotation Angle

查看:0
本文介绍了相对于旋转角度的矩形坐标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Surfaceview和画布绘图在Android中创建自定义组件。这些部件可以通过触摸来调整大小和旋转。考虑创建一个图像视图,它的上、右、下和左边缘可以通过触摸和拖动所需的边缘进行缩放。我使用RectF来保持组件的边界,对于旋转,我使用canvas.rotate(angle, bounds.centerX(),bounds.centerY())方法。问题是,当调整顶部边缘的大小时,字母、右侧和底部边缘应该是固定的,如果旋转角度不是0度,我就无法修复它。我需要一个数学解决方案来找出旋转矩形相对于实际矩形边界的x,y坐标。

我可以用一些图片来解释它。 下图显示了两个矩形,它们的边界也是已知的,并以各自的颜色显示。将Green RECT视为组件的初始边界,即。旋转-45度,中心为(10,10)。现在将调整矩形的上边缘的大小并显示在下一图2中。

从图2可以看出,Y位置从6减少到4。旋转的矩形也显示为粉红色。请记住,我是在组件旋转角度为-45度时进行大小调整的,因此在拖动Top Edge矩形的左、右和底部位置时,不应更改。因此图2的粉色矩形应该具有与图1的绿色矩形相同的左、右和底部坐标。图3显示了获得的矩形和预期的矩形的比较。

在图3中,黄色矩形是预期/必需的输出。与绿色旋转矩形相比,获得的矩形粉色颜色向上移动,这取决于旋转角度

  • 我的旋转角度=-45度
  • 实际(未调整大小)矩形的边界。
  • 旋转为-45度的实际(未调整大小)矩形的界限。
  • 调整大小的矩形的界限。
  • 旋转时调整大小的矩形的界限=-45度。
如何计算黄色矩形的边界/中心。以便我可以正确地实现我的组件的大小调整?让我知道有什么可以应用的数学吗?

所需的点/坐标在图3中标记为红色圆圈。

推荐答案

关键是:"如果旋转角度不是0度,我无法修复它。"

假设您的矩形旋转了10度。

1)将鼠标坐标围绕屏幕上的某个点旋转-10度

2)将矩形中心旋转-10度

.现在,您将问题简化为一个0度的矩形。矩形移动了,是的,鼠标移动了,但它们彼此之间应该是相对的。

3)现在执行矩形操作。矩形中心将移动。

4)将新矩形中心旋转10度

这样,您不必考虑它,并且您始终在未旋转的坐标下工作。

a角度旋转的[x, y]点将以[x*cos(a) - y*sin(a), x*sin(a) + y*cos(a)]结束

这篇关于相对于旋转角度的矩形坐标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆