当围绕其中心旋转图像时,为啥需要添加/减去质心?

Posted

技术标签:

【中文标题】当围绕其中心旋转图像时,为啥需要添加/减去质心?【英文标题】:When rotating an image about its center, why do you need to add/subtract the centroid?当围绕其中心旋转图像时,为什么需要添加/减去质心? 【发布时间】:2017-09-19 01:18:49 【问题描述】:

我正在课堂上学习图像处理,而且速度非常快,所以我在理解不同的概念时遇到了一些麻烦。具体来说,在旋转方面,我知道您需要将输入图像的每个像素坐标乘以旋转矩阵才能得到输出图像。但是,当您围绕其中心旋转图像时,您需要进行平移以减去质心,然后旋转,然后重新添加质心。这背后的逻辑是什么,它是如何工作的?

【问题讨论】:

【参考方案1】:

一般来说,当你旋转一个对象时,你会围绕原点 (0,0) 旋转它。但是,如果您想围绕某个其他点(在您的情况下为质心)旋转对象,您可以通过减去它来将原点移动到该点。旋转后,如果您希望输出在与开始时相同的坐标系中,您可以通过添加原点将其恢复到正常位置。

下面的图片展示了它以更好地理解-

最初要旋转的对象。

当您将其逆时针旋转 135 度时。输出1

但如果你想绕质心旋转,请将原点移到那里。

现在的样子 -

现在逆时针旋转相同的 135 度-

通过添加质心回到旧坐标系 - 输出 2

很明显,Output1 和 Output2 不一样,所以减去或不加质心取决于你要旋转的点。

【讨论】:

我觉得你添加回中心坐标的最后一步是错误的,由于某种原因它沿 y 向上移动了。 哦,是的,我一开始是从其他图像开始的,然后在不知不觉中添加了错误的图像。感谢您推荐@VaheTshitoyan 感谢您提供的数据,这有助于清除很多问题!

以上是关于当围绕其中心旋转图像时,为啥需要添加/减去质心?的主要内容,如果未能解决你的问题,请参考以下文章

围绕其中心旋转 UIImageView

围绕其中心旋转图像

Pygame,围绕中心旋转使图像消失

翻译后旋转不会工作

如何计算围绕其中心旋转的矩形的边界框?

围绕其中心旋转可缩放和翻译的 SVG 元素