检查C中的三角相似性

时间:2011-11-21 18:03:42

标签: c geometry

问题集要求我创建两个三角形,使用点定义它们,然后检查它们是否相似。

我做了第一部分:创建了一个结构点和一个结构三角形,正如profesor告诉我们的那样。为了解决检查相似性的问题,我想我可以使用这些点来定义向量,并且它们使用余弦定律来计算它的角度,并使用一些if句子来检查三角形是否相似。

哪些代码可以帮助我实现这一目标?我找不到任何能够变成局部解决方案的东西。

2 个答案:

答案 0 :(得分:1)

你所说的就是诀窍!

对于第一个三角形,采取一些措施,如你所说:在任何顶点上的角度(或其余弦 - 易于用点积计算)和它旁边的边长。

对于另一个三角形,使用if-conditions来查看角度(或其余弦)是否相同,以及长度的比率是否相同。您必须以这种方式从所有3个顶点进行此检查(如果至少有一个拟合,则三角形相似)。

更快的方法是始终以(对于instnace)最小角度的顶点开始,然后你只需要比较一次。

现在去编码吧! : - )

答案 1 :(得分:1)

您将获得每个三角形的所有三个点的坐标。让我们考虑两个三角形T1 A(a1,a2)B(b1,b2)C(c1,c2),T2 P(p1,p2)Q(q1,q2)R(r1,r2)。

  1. a =顶点A的相对侧的长度
  2. b =顶点B的相对侧的长度
  3. c =顶点C的相对侧的长度
  4. 类似于三角形T2的p,q,r

    因此,要使两个三角形相似,必须遵循以下条件

        1. AB = PQ; BC = QR; CA = RP 
           (We don't need their directions, So I am considering only magnitudes)
    
        2. angle (A) = angle(B)  i.e angle(BAC) = angle(QPR); 
           angle(B) = angle(Q)   i.e angle(CBA) = angle (RQP) and 
           angle(C) = angle(R).
    

    现在,你必须在这里使用坐标几何/球面几何。

    COS (A) = ( b^2 + c^2 - a^2 )/2bc
    COS (B) = ( c^2 + a^2 - b^2 )/2ac
    COS (C) = (a^2 +  b^2 - c^2)/2ab
    

    注意::因为余弦是2 * pi周期性的,所以请确保你有精确的角度。所以,你为什么不考虑使用反余弦函数来获得原理角度。(我不确定它们,因为它们是如何工作的。请检查)

    (类似于三角形T2的P,Q,R)。

    实际上还有另一条规则,它很容易做到。 法律:a/sin(A) = b/sin(B) = c/sin(C).

    我认为你必须通过Spherical Geometry

    我希望这有助于您完成该计划。

    如何执行该计划:

    实际上,如果你想使用结构,它很好。创建一个包含3个边和3个角的字段的结构。因此,您需要在结构类型下取两个变量并比较上面提到的数量。

    如果满足,则它们是相似的三角形。

    我希望这会对你有所帮助。