假设我有一些宽度为 w1 且高度 h1 的任意输入图像。我想将这个图像一直旋转360度回到起始位置。但是,如果图像是除圆形以外的任何图像,则如果绘制的画布仍然按 h1 的大小 w1 保留图像的边缘。< / p>
我需要的是确定可用于输入图像的所有旋转版本的画布大小(宽度 w2 和高度 h2 )。我知道 w2 == h2 ,因此所需的画布大小是一个正方形,因为很明显我们正在围绕一个中心点旋转一些东西,而最终的图像(经过360次旋转)基本上是一个圆圈。
要考虑的另一件事是像正方形这样的物体会有弯角,所以只使用两个尺寸的宽度或高度的最大值也不起作用。
我提出的一个解决方案是创建比我需要的更大的画布(例如将 w2 和 h2 设置为max(w1, h1) * 2
,旋转所有内容,然后修剪所有透明像素。这不是非常有效,我宁愿能够预先计算最紧的边界框。
答案 0 :(得分:3)
这是一个几何问题。你基本上想要找到一个圆形的直径(d),它会记录你的原始画布,然后是w2 = h2 = d
这种圆的直径为√(w1^2+h1^2)
所以w2 = h2 = √(w1^2+h1^2)
另外,为了避免剪裁,你可能想要取结果的上限而不是舍入。
答案 1 :(得分:2)
如果图像以正方形旋转,则必须使画布的高度和宽度与斜边相同。
w = h = sqrt(h ^ 2 + w ^ 2)
(我不知道动作脚本)
但是,如果您的图像不在正方形中,您基本上必须找到距离中心最远的点...
PS:已经很晚了,我在散步,所以如果这可能是错的,我很抱歉。答案 2 :(得分:1)
你的画布必须是正方形。
如果要围绕任何一点(在本例中为A点)旋转像绿色图形一样的身体,则正方形的一侧是距离身体中最远点A的距离的两倍。