通过算法将三角形放入框中

时间:2019-01-22 16:50:14

标签: algorithm geometry computational-geometry

triangle in box

比方说,我们在已知大小为l的方盒中有一​​个已知边长为a,b和c的三角形。三角形“恰好”适合于盒子,每个角接触盒子的侧面。三角形的两个角可能接触盒子的同一侧。如果我们知道方框中三角形的“一般方向”(即我们拥有四种可能的解决方案中的哪一个),我们如何算法确定三角形的确切位置和方向? / p>

我们有框大小的长度作为算法输入l,[a b c]是三角形和theta`的边长,即方向的估计。我们希望输出x和y分别表示框内的位置和theta(框内的方位)。

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

跟进:如果拟合不精确,我们怎么做?

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

2 个答案:

答案 0 :(得分:0)

如果三角形“正好适合”,那么只有两种情况可以限制三角形的方向:

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

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

每个三角形的可能性很小-最多48个。因此,您可以全部测试它们,也可以根据“总体方向”选择一个。

答案 1 :(得分:-1)

假设您所称的一般方向告诉您三角形的哪些顶点与正方形的哪个边相接触,则长边与水平方向形成的角度为正或负长度长度比的反余弦。 / p>

假设您可以分辨出正确的符号,则可以通过简单的三角函数找到另外两个边的角度,然后从中找到所有三个顶点的高度以及水平位置。

请注意,接近极限情况(水平方向),知道粗糙的方向是不够的。