计算限制另一个并保持方面的最小旋转矩形

时间:2014-11-11 01:28:30

标签: javascript algorithm math geometry

我需要能够计算矩形2

的大小

为了说明我的问题,这是一个图表:

enter image description here

  • 我知道矩形1的widthheight
  • 我知道rectangle 2的宽高比以及最小heightwidth的长宽比总是大于矩形1
  • 我知道rotation的来源,它始终是矩形1的中心
  • 我知道弧度
  • rotation的角度
  • 矩形1 必须始终完全位于矩形2

鉴于上述变量,我需要计算最小尺寸矩形2 ,同时保持其纵横比和旋转原点。

这个出色的函数计算旋转的外部矩形内可能的最大矩形。

Calculate largest rectangle in a rotated rectangle

我试图用它作为基础来实现我需要的行为,但到目前为止没有运气。我正在链接它以防万一对数学知识比我更有帮助的人。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在评论中你说它只是一个三角函数问题,所以我只写了公式。

在你的照片中,右下三角形将是你需要的较大矩形的一部分。

如果较小的角度是x(它等于旋转角度),并且内部矩形的边是a,则三角形的边将是* cos(x)和a * sin(x)。当我们移动到内部矩形的下一侧,下部b时,我们将得到b * cos(x),b * sin(x)。

图像是对称的,因此较大矩形的一边是* cos(x)+ b * sin(x),另一边是a * sin(x)+ b * cos(x)。这些是您需要的尺寸。

您可以检查x = 0(无旋转),x = pi / 2或pi,以查看这些情况下的特殊情况和大小。