我们知道退化三角形是一个三角形,它的所有三个点都在一条直线上,因此它的所有边都在彼此的顶部。所以三角形有三个边,现在我必须确定它是退化三角形还是生成三角形。
如何使用C语言解决此问题?
答案 0 :(得分:18)
当您有三个边长,a
≤b
≤c
时,当a
+ b
= {{1}时,三角形会退化}。 (其他三角形有c
+ a
> b
,而c
+ a
< b
的三角形是不可能的。)
答案 1 :(得分:11)
如果a,b和c是三角形三边的长度,那么
a + b > c
a + c > b
b + c > a
如果这些不等式中的任何一个不成立,那么我们得到一个简并三角形。
简单来说,首先按升序排序a,b,c然后检查以下条件
a + b <= c
如果这个条件满足则三角形是退化三角形。
答案 2 :(得分:5)
你需要弄清楚A,B和C点是否在同一条线上。如果AB和AC具有相同的斜率,则它们是共线的(在同一条线上)。
您现在已经将问题简化为计算斜率,这在C中应该很容易。
答案 3 :(得分:3)
鉴于三角形的边长 a
,b
,c
,您可以通过Heron's formula计算三角形的面积。如果该区域为0(或小于给定阈值,b / c的舍入误差),则该三角形是简并的。
给定三角形的顶点 A
,B
,C
,您可以计算(A-B)
和{{所跨越的平行四边形的面积1}}取cross product's幅度。如果此区域为零,则您的三角形将退化。您也可以等效地计算顶点的边长,然后返回使用Heron的公式。