algorithm - 算法将三角形拟合到盒子中
问题描述
假设我们有一个已知边长为 a、b 和 c 的三角形,在一个已知大小为 l 的方形框中。三角形“完全”适合盒子,每个角都与盒子的侧面接触。三角形的两个角可能接触盒子的同一侧。如果我们知道盒子中三角形的“一般方向”(即我们有四种可能的解决方案中的哪一种),我们如何通过算法确定三角形的确切位置和方向?
我们有算法输入 l,盒子大小的长度,[abc] 是三角形的边长和 theta`,方向的估计。我们想要作为输出 x 和 y 代表盒子内的位置,以及 theta,盒子内的方位方向。
具体来说,我们将定义垂直平分线和边相交的位置,以及线(橙色)与垂直线的夹角。
跟进:如果拟合不准确,我们怎么能做到这一点?
如果给定方向,我了解如何获得位置,以及给定位置的方向,但是如何确定两者都在逃避我。
解决方案
如果三角形“完全适合”,那么只有两种东西可以限制三角形的方向:
如图所示,三角形的一侧(足够长)卡在盒子的相对两侧。在这种情况下,您可以使用 acos() 来计算其 4 个可能的方向;或者
三角形的一侧位于盒子的一侧,在这种情况下,它的方向是垂直或水平的。
每个三角形有少量的可能性——最多 48 种。所以你可以只测试它们,或者在给定“一般方向”的情况下选择一个
推荐阅读
- python - 为什么 Python 逻辑运算符不能使用这个 if 语句?
- java - 403 - 使用 Java 将数据写入 Google 电子表格的权限不足
- snowflake-cloud-data-platform - 在共享表上流式传输的替代方案
- xcode - 多个命令产生 Parse.bundle
- javascript - 使用 browserify + babel 的 gulp.task 语法问题
- typescript - 如何使用 Mocha Chai 单元测试来测试一个函数是否有两个字符串参数
- javascript - 如何摆脱 React.js 中的 NO ACCESS CONTROL ORIGIN 错误?
- html - 带字幕的 HTML 文本
- drake - 输入端口的索引是什么意思?
- kubernetes - 在 k8s 集群上运行的 ansible 的正确 dockerfile