Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算限制另一个矩形并保持纵横比的最小旋转矩形_Javascript_Algorithm_Math_Geometry - Fatal编程技术网

Javascript 计算限制另一个矩形并保持纵横比的最小旋转矩形

Javascript 计算限制另一个矩形并保持纵横比的最小旋转矩形,javascript,algorithm,math,geometry,Javascript,Algorithm,Math,Geometry,我需要能够计算矩形2的大小 为了说明我的问题,这里有一个图表: 我知道矩形1的宽度和高度 我知道矩形2的纵横比以及最小高度和宽度始终大于矩形1 我知道旋转的原点,它始终是矩形1的中心 我知道旋转的角度在弧度中 矩形1必须始终完全位于矩形2 给定上述变量,我需要计算矩形2的最小尺寸,同时保持其纵横比和旋转原点 这个优秀的函数计算旋转外矩形中可能的最大矩形 我曾试图以此为基础来达到我所要求的行为,但迄今为止运气不佳。我正在链接到它,以防它对任何比我有更高数学知识的人都有帮助 非常感谢您的帮助

我需要能够计算矩形2的大小

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

  • 我知道矩形1的宽度和高度
  • 我知道
    矩形2的纵横比以及最小
    高度
    宽度
    始终大于矩形1
  • 我知道
    旋转的原点,它始终是矩形1的中心
  • 我知道
    旋转的角度
    弧度中
  • 矩形1必须始终完全位于矩形2
给定上述变量,我需要计算矩形2的最小尺寸,同时保持其纵横比和旋转原点

这个优秀的函数计算旋转外矩形中可能的最大矩形

我曾试图以此为基础来达到我所要求的行为,但迄今为止运气不佳。我正在链接到它,以防它对任何比我有更高数学知识的人都有帮助


非常感谢您的帮助。

在您的评论中,您说这只是一个三角问题,所以我只写公式

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

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

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


您可以使用x=0(无旋转)、x=pi/2或pi进行检查,以查看这些情况下的特殊情况和尺寸。

旋转角度是否在0到1/2弧度之间?角度将出现在所有小的相邻三角形中,因此你可以很容易地找到新矩形的顶点。角度可以在半圈内的任何地方,因此0-1Pi弧度。至于相邻三角形的概念,这对你有用吗?这是一个三角问题,不是编程。@TimothyHa,这确实是一个三角问题。这就是为什么我在苦苦挣扎,因为我对这类数学的掌握很差。我认为这个公式对0是有效的。这看起来很棒,谢谢。。。我会很快用javascript写出来,当我确认后,会将你的答案标记为正确。@gordyr你在这方面的进展如何?对不起,伙计,完全忘记给你答案了。再次感谢你的帮助,它让我找到了我需要的地方。