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

标签 javascript algorithm math geometry

我需要能够计算矩形 2

的大小

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

enter image description here

  • 我知道矩形1宽度高度
  • 我知道 rectangle 2 的纵横比以及最小 heightwidth ,它们总是大于 rectangle 1
  • 我知道旋转的原点,它总是矩形1中心
  • 我知道旋转的 Angular 弧度
  • 矩形 1 必须始终完全位于 矩形 2

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

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

Calculate largest rectangle in a rotated rectangle

我曾尝试以它为基础来实现我需要的行为,但到目前为止还没有成功。我会链接到它,以防它对数学知识比我丰富的任何人有所帮助。

如有任何帮助,我们将不胜感激。

最佳答案

在评论中你说这只是一个三 Angular 问题,所以我只写公式。

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

如果较小的 Angular 为x(等于旋转 Angular ),内矩形的边为a,则三 Angular 形的边为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 以查看这些情况下的特殊情况和大小。

关于javascript - 计算限制另一个并保持纵横比的最小旋转矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26856020/

相关文章:

algorithm - 计算 FOR 循环标记如何影响复杂性

java - 一次仅使用 2 个成员的平均值查找数组的平均值

javascript - 删除传单 map 上的图例

javascript - 数组列表 Javascript

javascript - 可以判断两个对象在 Chrome 调试器中是否相同?

javascript - 从类名中删除单词

javascript - 匹配一个词,其中候选者可以跨越连续的组(跨度)

math - 针对矩形裁剪多边形

javascript - 分配计数时建立平均值

c# - .Net 中的零舍入错误类?