【问题标题】:How to rotate/scaling/translate about centroid如何围绕质心旋转/缩放/平移
【发布时间】:2013-11-15 20:58:55
【问题描述】:
rotating
x' = x*Cos(angle) - y*Sin(angle)
y' = x*Sin(angle) + y*Cos(angle)
Scaling
x' = x*sx
y' = y*sy
translate
x' = x+tx
y' = y+ty

但所有公式都将针对原点进行。 如果我想做关于质心点。 (我有 (Cx,Cy) )。 公式是什么。

对不起,关于英语,我会多练习。

谢谢。

【问题讨论】:

  • 要选择“正确”的答案,请单击复选标记图标。

标签: c graphics centroid


【解决方案1】:

这就是翻译的目的。平移将原点移动到一个新点(更准确地说,它建立了一个新坐标系,其原点与原始坐标系中指定的点重合)。在使用仿射矩阵变换的典型图形实现中,这个新原点将是在它之后执行的任何旋转的中心。

如果你组合它们,你可以从方程中看到这一点。假设我们要放置一个围绕点 (200, 200) 旋转的图形。

// translate to new origin
x' = x + 200
y' = y + 200
// rotate by 90 degrees
x'' = x'*cos(90) - y'*sin(90) 
    = x*cos(90) + 200*cos(90) - y*sin(90) - 200*sin(90)
    = x*cos(90) - y*sin(90) + 200
y'' = x'*sin(90) + y'*cos(90)
    = x*sin(90) + 200*sin(90) + y*cos(90) + 200*cos(90)
    = x*sin(90) + y*cos(90) + 200

【讨论】:

  • 平移将不同的点移至原点,反之则不然。我在八年级的第一堂平面几何课中提到了“移动原点”(我已经做了一点图形编程),我的数学老师被激怒了
  • 已确认。我添加了一个措辞更准确的描述作为括号。
【解决方案2】:

平移,使质心为原点,旋转,平移回来。也就是说,如果您有一个点(x,y)=(Cx,Cy)+(xr,yr) 的坐标,其中(x,y) 是您要围绕质心旋转的点,(Cx,Cy) 是质心的坐标,(xr,yr) 是该点相对于的位置质心。然后你可以旋转(xr,yr),添加到Cx,Cy)

【讨论】:

    【解决方案3】:

    平移对象,使质心与原点重合,然后执行任何变换,然后将其平移回来。

    根据您用于实现几何的方式,您可能能够在执行繁重的工作之前线性组合这些操作。或者您的库可能会提供具有不变点作为参数的操作版本,您可以为其指定质心。

    但与任何其他点相比,围绕质心进行变换并没有什么特别之处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 2014-02-14
      • 1970-01-01
      相关资源
      最近更新 更多