如何缩放旋转的矩形以始终适合另一个矩形

时间:2015-11-23 08:32:25

标签: algorithm geometry

我的问题的背景如下。 我有一个图片和一个裁剪矩形,描述了如何裁剪图片以产生最终的图片。裁剪矩形总是较小或最大化图片的大小。 现在应该可以旋转裁剪矩形。 这意味着当在图片内旋转裁剪区域时,必须缩放裁剪,以使其延伸不超过照片。

anybode可以帮我解决一下如何根据轴对齐的照片重新计算作物矩形的比例吗?

我的第一次尝试是计算裁剪矩形的轴对齐边界框,而不是使其适合照片矩形。但不知怎的,我对这种方法感到困惑,

编辑: 还有一点需要注意: - 裁剪矩形可以具有其他尺寸,并且在周围矩形内可以有另一个中心点。这意味着裁剪矩形可以小得多,但是例如位于图片矩形的左下边界。因此,当旋转较小的作物时,它也将超过其限制

提前致谢 塞巴斯蒂安

2 个答案:

答案 0 :(得分:7)

当您将宽度为w且高度为h的轴对齐矩形旋转角度φ时,旋转矩形的轴对齐边界框的宽度和高度为:

W = w·|cos φ| + h·|sin φ|
H = w·|sin φ| + h·|cos φ|

(符号|x|表示绝对值。)这是旋转裁剪矩形的边界框,您可以缩放以适合宽度为wo和高度ho的原始矩形因素

a = min(wo / W, ho / H)

如果a小于1,则旋转的裁剪矩形适合原始矩形,您无需缩放。否则,将裁剪矩形缩小为缩放尺寸

W′ = a·W
H′ = a·H

答案 1 :(得分:1)

您可以开始检查裁剪矩形的尺寸是否适合旧矩形:

bound_x = a * cos(theta) + b * sin(theta)
bound_y = b * cos(theta) + a * sin(theta)

其中a和b是新尺寸,角度和bound_x和bound_y应该小于原始矩形。