计算一个正方形在旋转 45 度后需要缩小多少才能适合

Calculate how much smaller a square would have to be to fit after rotated 45 degrees

背景:我正在 Unity 中创建一个 UI 元素并需要旋转它。它是一个正方形,将旋转 45 度。由于 Unity UI 中的旋转发生 所有大小调整和定位完成后,这个正方形的角会超出最大区域。

所以我在正方形中有一个正方形。默认情况下,它与父方块的大小相同。旋转 45 度后,它太大而无法放入父正方形。如何计算在 before 旋转后缩小子方块以使其适合父方块 after 旋转的百分比?

其实,我刚刚想通了。子方块的大小需要是父方块大小的百分比,我们可以从 45 度的正弦(或者余弦也可以,我想?)得到。

sin(45) == 0.70710678118654752440084436210485

要达到该大小,我需要将子方块的大小缩小 100% 和 70.7106...%。

1 - sin(45) == 0.29289321881345247559915563789515

由于我使用的是 Unity 并使用锚点位置控制正方形 UI 元素的大小,我只是将其除以 2,并将最小 X 锚点设置为 0.146,将最大 X 锚点设置为 0.854。将 Aspect Ratio Fitter 组件设置为 Width Controls Height 且比例为 1,这会导致我的子方块即使在旋转时也始终完全适合我的父方块。

一个边长a的正方形有一条对角线长度d = sqrt(2)*a,因为根据毕达哥拉斯定理,由对角线和正方形的两条边组成的三角形满足d^2 = a^2 + a^2 = 2*a^2 .

因此内部正方形必须按 1/sqrt(2) 缩放,这与 sin(pi/4) = sin(45°)cos(pi/4) = cos(45°) 相同并且大约 0.7071....

如果以正方形的中心为中心进行缩放,则旋转发生在缩放之前还是之后都没有关系。