问题集要求我创建两个三角形,使用点定义它们,然后检查它们是否相似。
我做了第一部分:创建了一个结构点和一个结构三角形,正如profesor告诉我们的那样。为了解决检查相似性的问题,我想我可以使用这些点来定义向量,并且它们使用余弦定律来计算它的角度,并使用一些if句子来检查三角形是否相似。
哪些代码可以帮助我实现这一目标?我找不到任何能够变成局部解决方案的东西。
答案 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)。
类似于三角形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个角的字段的结构。因此,您需要在结构类型下取两个变量并比较上面提到的数量。
如果满足,则它们是相似的三角形。
我希望这会对你有所帮助。