计算旋转矩形中最大的内接矩形

2023-11-23

我试图找到计算可包含在旋转矩形内的最大(面积)矩形的最佳方法。

有些图片应该有助于(我希望)理解我的意思:

input rectangle with given width and height rotate erctangle by alpha degrees output inner rectangle

输入矩形的宽度和高度是给定的,旋转角度也是给定的。输出矩形未旋转或倾斜。

我正在走一条冗长的路线,我什至不确定它是否能处理极端情况(没有双关语)。我确信有一个优雅的解决方案。有小费吗?

EDIT:输出矩形点不一定必须接触输入矩形边缘。 (感谢E先生)


我只是来这里寻找同样的答案。在想到涉及到如此多的数学内容后,我感到不寒而栗,我想我应该求助于半受过教育的猜测。涂鸦了一下,我得出了(直观的,可能不完全准确的)结论:最大的矩形与外部生成的矩形成比例,并且它的两个相对角位于外部矩形的对角线与外部矩形的最长边的交点处。旋转的矩形。对于正方形,任何对角线和边都可以......我想我对此很满意,现在将开始清除我生锈的三角技能上的蜘蛛网(可悲的是,我知道)。

Probably not the best solution, but good enough for what I'm about to do

小更新...设法进行一些三角计算。这是针对图像的高度大于宽度的情况。

Some trig scribbles

更新。一切顺利。这是一些js代码。它连接到一个更大的程序,大多数变量都在函数的范围之外,并且直接从函数内部修改。我知道这不好,但我在孤立的情况下使用它,这样就不会与其他脚本混淆:redacted


我冒昧地清理了代码并将其提取到一个函数中:

function getCropCoordinates(angleInRadians, imageDimensions) {
    var ang = angleInRadians;
    var img = imageDimensions;

    var quadrant = Math.floor(ang / (Math.PI / 2)) & 3;
    var sign_alpha = (quadrant & 1) === 0 ? ang : Math.PI - ang;
    var alpha = (sign_alpha % Math.PI + Math.PI) % Math.PI;

    var bb = {
        w: img.w * Math.cos(alpha) + img.h * Math.sin(alpha),
        h: img.w * Math.sin(alpha) + img.h * Math.cos(alpha)
    };

    var gamma = img.w < img.h ? Math.atan2(bb.w, bb.h) : Math.atan2(bb.h, bb.w);

    var delta = Math.PI - alpha - gamma;

    var length = img.w < img.h ? img.h : img.w;
    var d = length * Math.cos(alpha);
    var a = d * Math.sin(alpha) / Math.sin(delta);

    var y = a * Math.cos(gamma);
    var x = y * Math.tan(gamma);

    return {
        x: x,
        y: y,
        w: bb.w - 2 * x,
        h: bb.h - 2 * y
    };
}

我遇到了一些问题gamma-计算,并修改它以考虑原始盒子在哪个方向上最长。

——马格努斯·霍夫

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算旋转矩形中最大的内接矩形 的相关文章

  • 两个程序对象运行时比较的方法

    我正在进行一种特定类型的代码测试 该测试相当麻烦并且可以自动化 但我不确定最佳实践 在描述问题之前 我想澄清一下 我正在寻找合适的术语和概念 以便我可以阅读有关如何实现它的更多信息 当然 欢迎就最佳实践提出建议 但我的目标很具体 这种方法叫
  • GCC的sqrt()编译后如何工作?使用哪种root方法?牛顿-拉夫森?

    只是对标准感到好奇sqrt 来自 GCC 上的 math h 我自己编码的sqrt 使用牛顿拉夫森来做到这一点 是的 我知道 fsqrt 但CPU是如何做到这一点的呢 我无法调试硬件 现代 CPU 中的典型 div sqrt 硬件使用 2
  • 如何四舍五入到一半,始终为正方向? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何实现以下舍入 0 0126083
  • 如何检查是否存在可能的路径?

    我正在开发一个基于 javascript 的实验性游戏 玩家必须在二维平铺地图上移动才能退出 请随意检查这个小提琴并演奏 http jsfiddle net moonlife 74vLd 我只是随机放置障碍物 但有时障碍物会挡住玩家和出口之
  • 验证假名输入

    我正在开发一个允许用户输入日语字符的应用程序 我试图想出一种方法来确定用户的输入是否是日语假名 平假名 片假名或汉字 应用程序中的某些字段不适合输入拉丁文文本 我需要一种方法将某些字段限制为仅限汉字或仅限片假名等 该项目使用UTF 8编码
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 负整数的基数排序

    我正在尝试对整数 包括负整数 实现基数排序 对于非负整数 我计划为数字0 9创建一个10个队列的队列 并实现LSD算法 但我对负整数有点困惑 我现在的想法是继续为它们创建另一个包含 10 个队列的队列 并分别对它们进行排序 然后在最后 我将
  • Florian 的 Grisu2 算法如何工作?

    我遇到了一个关于将 double 转换为 ascii 的问题 经过搜索 我得到了 Florian 的论文 使用整数快速准确地打印浮点数 http www cs tufts edu nr cs257 archive florian loits
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 用于开始和/或包含搜索的最快字符串集合结构/算法是什么

    我有以下情况 我有一个大的字符串集合 比如说 250 000 平均长度可能是 30 我要做的就是在这些搜索中进行许多搜索 大多数搜索都是 StartsWith 和 Contains 类型的 该集合在运行时是静态的 这意味着选择的集合的初始读
  • Java递归方法求阶乘返回负输出[重复]

    这个问题在这里已经有答案了 我知道这是溢出 但问题是 20 是相对较小的数字 这不应该发生 对吧 有没有更好的方法来查找大数 例如 1000 的阶乘 而不会得到这种奇怪的结果 public class RecursiveFunctionsE
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 哪些不同的术语表示相同的事物(或不同的术语,但人们认为它们表示相同的意思)? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 需要解释搜索最小大和的算法

    我正在解决 Codility 问题作为练习 但无法回答其中一个问题 我在互联网上找到了答案 但我不明白这个算法是如何工作的 有人可以引导我逐步完成它吗 这是问题 You are given integers K M and a non em
  • 如何对对象进行排序? (画家算法)

    所以我有 4 个矩形形状 我正在尝试应用排序算法 画家算法 https en wikipedia org wiki Painter 27s algorithm 来知道我需要先绘制哪些形状 在 3d 中 然后绘制哪个形状 Note 相机位于右
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • WPF - 路径几何...有没有办法绑定数据属性?

    我有一个ControlTemplate作为 气泡 弹出窗口AdornerLayer给定的控制 它工作正常 但我需要能够计算它应该显示的位置 中间 底部 代替
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 应用对数来导航树

    我曾经知道一种使用对数从树的一片叶子移动到树的下一个 有序 叶子的方法 我认为它涉及获取 当前 叶子的位置值 排名 并将其用作从根向下到新目标叶子的新遍历的种子 一直使用对数函数测试来确定是否沿着右或左节点向下到达叶子 我已经不记得如何运用

随机推荐

  • 比较2个不同pandas数据帧的2列,如果相同则在Python中插入1到另一个

    我有一个带有日期时间 电压数据的熊猫数据框 如下所示 df1 Date Time Chan 0 20130401 9 00 AAT 1 20130401 10 00 AAT 2 20130401 11 00 AAT 3 20130401 1
  • PL/SQL 可选,其中 [重复]

    这个问题在这里已经有答案了 嘿 我在 PL SQL 中有这个查询 Ver todos los atributos de las OL de una OS SELECT attr swspattrdataid attr data id att
  • 阻止执行特定的内联脚本标记

    我正在尝试编写一个脚本捣固猴阻止执行特定的内联脚本标记 页面正文看起来像这样
  • 如何根据一组图像编写电影创作脚本?

    我设法使用 Python 加载了一组图像 我希望我的脚本能够拍摄这一系列图像 以我需要的任何格式 并根据它们创建视频 所有这一切的最大限制是我正在寻找易于安装的东西 理想情况下 使用标准 OS X 安装过程 下载 dmg click 移至应
  • 在spark中,如何快速估计数据框中的元素数量

    在spark中 有没有一种快速的方法来获取数据集中元素数量的近似计数 也就是说 比Dataset count does 也许我们可以根据数据集的分区数量来计算这些信息 可以吗 你可以尝试使用countApprox在 RDD API 上 尽管
  • 如何重写此 Flask 视图函数以遵循 post/redirect/get 模式?

    我有一个小型日志浏览器 它根据用户的输入检索并显示以前记录的记录列表 它不更新任何内容 代码非常简单并且运行良好 这是一个简化版本 app route log methods GET POST def log form LogForm if
  • 如何在 Docker 构建期间运行需要 tty 的命令?

    我有一些需要在 Docker 构建期间运行的脚本 该脚本需要 tty Docker 在构建期间不提供 在幕后该脚本使用read命令 Witha tty 我可以做类似的事情 echo yes echo no myscript sh 没有它 我
  • 地图/方向卡和集成操作/意图,例如呼叫、电子邮件 - 使用 Dialogflow、Actions on Google、NodeJS 客户端 V2

    我一直在试图弄清楚如何使用构建地图 方向卡对话流和NodeJS 客户端 经过一些研究后 我发现了这个SO解释了如何使用生成静态地图 URL 作为图像 谷歌路线 API和折线 但在我看来 Dialogflow 中应该有一个功能 允许开发人员构
  • 将方法设为虚拟有什么危险?

    我一直在使用 RhinoMocks 进行一些模拟 它要求将模拟方法设为虚拟 这很好 除了我们有一个自定义框架 其中包含我想要模拟的方法 这些方法当前未标记为虚拟 我无法预见使这些方法虚拟化会出现任何问题 但我想知道使方法虚拟化有哪些我应该注
  • 如何在 CSS 中创建脉冲发光环动画?

    我喜欢这样的方式website让他们的戒指发光并发出脉冲 我想知道他们是如何做到的 我可以做类似的东西 但我不是很好 这就是我所能弄清楚的 但它似乎不起作用 CSS glowycircleouter blue glow4 box shado
  • 切换到浏览器中其他打开的选项卡时更改标题标签的内容

    我最近在两个不同的网站上看到了这个 有人知道它是如何完成的吗 如果您打开了多个选项卡 并且保留了当前选项卡 则选项卡中的标题会发生更改 非常好的技巧 http blog invisionapp com http zerosixthird s
  • 使用 jQuery datepicker 进行自定义日期格式验证(无法摆脱美国日期验证)

    我快到了 我创建了本地化的 jQuery 日期选择器 添加了自定义格式验证 但无法摆脱 默认 美国日期格式验证 我正在像这样渲染我的日期字段 Html EditorFor m gt m JobDate Html ValidationMess
  • Rails - 嵌套包含在活动记录上?

    我有一个我获取的事件列表 我试图包含与此事件关联的每个用户以及与每个用户关联的每个配置文件 用户被包含在内 但他们的个人资料未被包含在内 我该怎么做 Event includes users profile 文档似乎不清楚 http gui
  • Laravel 5 如何包含 autoload.php

    我试图包含 autoload php 的路径 该路径位于 vendor autoload php 尝试访问它的文件位于 public this file php 我将路径设置为require once vendor autoload php
  • Resteasy Bean 验证未被调用

    问题背景 我有一个通过 Resteasy 使用 Spring 的 Resteasy 服务SpringContextLoaderListener 这是基于 Resteasy 版本构建的3 0 beta 6 我想对传入请求使用 bean 验证
  • Azure DevOps 本地成本

    这么问似乎很奇怪 但这就是微软希望我们做的事情 所以这里 我正在考虑设置本地 Azure DevOps 2019 服务器 但与往常一样 许可和成本不是很透明 我们的开发团队可能会获得 Visual Studio Pro 订阅 我相信它附带
  • 每 5 秒连续调用一次 Javascript 函数 [重复]

    这个问题在这里已经有答案了 可能的重复 每 60 秒调用一次函数 我想每 5 秒连续调用一次 Javascript 函数 我见过 setTimeOut 事件 如果我想要连续使用它会正常工作吗 您可以使用setInterval 参数是相同的
  • 如何用某种颜色突出显示树视图所选项目?

    我在 WPF 中有一个树视图 当我选择树视图项目时 我想要不同的颜色 简单触发TreeView ItemContainerStyle对于默认的 TreeView 模板没有帮助 对于标准模板突出显示是通过特定的背景更改来完成的TreeView
  • jQuery 可以解析存储在变量中的 HTML 吗?

    我使用 PHP 和 ajax 命令来获取外部网页的整个 HTML 内容 通过 PHPfile get contents 命令 并将该 HTML 传递到 JavaScript 变量中 一旦我将页面的 HTML 内容存储在变量中 我是否可以使用
  • 计算旋转矩形中最大的内接矩形

    我试图找到计算可包含在旋转矩形内的最大 面积 矩形的最佳方法 有些图片应该有助于 我希望 理解我的意思 输入矩形的宽度和高度是给定的 旋转角度也是给定的 输出矩形未旋转或倾斜 我正在走一条冗长的路线 我什至不确定它是否能处理极端情况 没有双