【问题标题】:Calculate Minimum Size of Rectangle to Cover Canvas During Rotation计算旋转期间覆盖画布的最小矩形大小
【发布时间】:2013-01-22 03:16:31
【问题描述】:

我想知道如何计算显示层的最小尺寸,以便无论旋转如何,它都会始终覆盖它的画布。

下图描绘了一个尺寸为 1280 宽 x 800 高的画布(黑色矩形)。

居中对齐和居中对齐,使画布完全覆盖在 0 度(图 1)和 90 度(图 2),渐变显示层已按比例调整大小,从 1280 宽度 x 800 高度(画布大小相同)改为2048宽×1280高,使原来的最小长度与画布的最大长度匹配。但是,如图 3 所示,使用这种基本的按比例调整大小逻辑,某些角度不会完全覆盖画布。

如何确定渐变显示层的最小尺寸(不超过),以便在居中对齐和居中对齐时,无论角度如何,它始终覆盖画布?

【问题讨论】:

  • 不就是一个边长等于黑色矩形对角线的正方形吗? (或 sqrt(1280^2 + 800^2))
  • 啊,这么简单。谢谢蒂莫西。请将此添加为答案,以便我将其标记为正确。

标签: math rotation trigonometry angle


【解决方案1】:

假设您使用的是圆形而不是矩形的渐变层。显然,如果圆是覆盖画布的最小尺寸,它可以任意旋转,仍然覆盖画布。

那个圆的直径是画布的对角线。您寻找的矩形是可以包含该圆的最小矩形:边为圆直径的正方形。

这为您提供了任何“画布”形状的答案:您只需找到其中心位于包含整个画布的所需旋转点的最小圆。 p>

【讨论】:

    【解决方案2】:

    重新发布作为答案:

    不就是一个边长等于黑色矩形的对角线的正方形吗? (或 sqrt(1280^2 + 800^2))

    【讨论】:

      【解决方案3】:

      屏幕的宽度必须至少大于画布的对角线,高度必须至少大于画布的宽度和高度的最大值:

      Width = sqrt(x^2 + y^2) = sqrt(1280^2 + 800^2) = 1509.4
      Height = max(x,y) = 1280
      

      其中 x 是画布的宽度,y 是高度

      【讨论】:

      • 好的,假设 x 是 3,y 是 4。所以宽度是 5,高度是 4。你告诉我一个 4x5 矩形与一个 3x4 矩形同心可以绕中心点旋转,总是覆盖 3x4 矩形?尝试在方格纸上实际绘制这样的矩形并将它们相互旋转,看看会发生什么。
      猜你喜欢
      • 2022-01-21
      • 2011-08-12
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 2012-04-15
      相关资源
      最近更新 更多