【问题标题】:Translating a rectangle's coordinates平移矩形坐标
【发布时间】:2011-06-23 06:42:45
【问题描述】:

我有两个应用程序,一个创建一个矩形,并输出它的左侧、顶部、宽度、高度和旋转角度,另一个将矩形绘制到屏幕上。

Application1 (writer) 使用左上角作为旋转原点。

Application2(阅读器)使用中心作为旋转原点。

我正在尝试获取 deltaX 和 deltaY,以便我可以绘制矩形,围绕原点旋转它,并使用内置的 translate 方法将矩形移动到位。

我知道可以按如下方式计算点旋转:

x' = x*cos(theta) - y*sin(theta) y' = x+sin(theta) + y*cos(theta)

但是,这样一来,我似乎无法弄清楚 translate 方法所需的实际 delta 值。

在下图中,白色矩形是使用顶部/左侧作为旋转点绘制的,而绿色矩形是使用中心作为旋转点绘制的。我想将绿色矩形移到白色矩形上。

(0,0)

【问题讨论】:

  • 翻译,例如,将增量添加到矩形边界?还是您在谈论其他翻译?
  • 我的理解是翻译意味着将每个坐标移动deltaX,deltaY。
  • 那么应用程序2通过中心坐标、宽度、高度和旋转来描述矩形?
  • @Alan: 应用 1 和 2 中 x 轴和 y 轴的方向是什么?
  • 在这两个应用程序中,0,0 是屏幕的左上角。

标签: geometry translation


【解决方案1】:

你必须翻译:

发展:

  • 在应用程序 1 中,矩形的左上角应为。

  • 由于应用程序 1 围绕左上顶点旋转矩形,它们的旋转位置重合:

  • 应用程序 2 使用中心坐标,它与应用程序 1 的左上角相关,如下所示:

  • 为了计算应用程序 2 中的旋转左上角顶点,我们应用rotation matrix R:

  • 所以平移向量 T 是(代入上面的方程):

【讨论】:

  • 嗨丹尼尔:+1 作为问题最初写的答案,但是我已经重写了问题以更清楚。两个矩形都使用 top,left 作为起点;这是不同的旋转点。所以白色矩形围绕左上角旋转,而绿色从中心旋转。
  • 再次感谢您抽出宝贵时间帮助我解决此问题。如果不是太麻烦,你能解释一下你是怎么解决的吗?
  • 我希望我有 4 个帐户。所以我可以给这个答案四票!
猜你喜欢
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多