首页 > 解决方案 > 算法将三角形拟合到盒子中

问题描述

盒子里的三角形

假设我们有一个已知边长为 a、b 和 c 的三角形,在一个已知大小为 l 的方形框中。三角形“完全”适合盒子,每个角都与盒子的侧面接触。三角形的两个角可能接触盒子的同一侧。如果我们知道盒子中三角形的“一般方向”(即我们有四种可能的解决方案中的哪一种),我们如何通过算法确定三角形的确切位置和方向?

我们有算法输入 l,盒子大小的长度,[abc] 是三角形的边长和 theta`,方向的估计。我们想要作为输出 x 和 y 代表盒子内的位置,以及 theta,盒子内的方位方向。

具体来说,我们将定义垂直平分线和边相交的位置,以及线(橙色)与垂直线的夹角。

跟进:如果拟合不准确,我们怎么能做到这一点?

如果给定方向,我了解如何获得位置,以及给定位置的方向,但是如何确定两者都在逃避我。

标签: algorithmgeometrycomputational-geometry

解决方案


如果三角形“完全适合”,那么只有两种东西可以限制三角形的方向:

  1. 如图所示,三角形的一侧(足够长)卡在盒子的相对两侧。在这种情况下,您可以使用 acos() 来计算其 4 个可能的方向;或者

  2. 三角形的一侧位于盒子的一侧,在这种情况下,它的方向是垂直或水平的。

每个三角形有少量的可能性——最多 48 种。所以你可以只测试它们,或者在给定“一般方向”的情况下选择一个


推荐阅读