给定三角形的三个边,我如何定义它是否是退化三角形?

时间:2015-10-09 11:44:30

标签: c syntax

我们知道退化三角形是一个三角形,它的所有三个点都在一条直线上,因此它的所有边都在彼此的顶部。所以三角形有三个边,现在我必须确定它是退化三角形还是生成三角形。

如何使用C语言解决此问题?

4 个答案:

答案 0 :(得分:18)

当您有三个边长,abc时,当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)

鉴于三角形的边长 abc,您可以通过Heron's formula计算三角形的面积。如果该区域为0(或小于给定阈值,b / c的舍入误差),则该三角形是简并的。

给定三角形的顶点 ABC,您可以计算(A-B)和{{所跨越的平行四边形的面积1}}取cross product's幅度。如果此区域为零,则您的三角形将退化。您也可以等效地计算顶点的边长,然后返回使用Heron的公式。