检查三角形是否为钝角三角形

时间:2013-12-09 17:02:13

标签: java algorithm geometry point

假设我有3个点A,B,C,它们具有坐标A(x1,y1),B(x2,y2),C(x3,y3)。检查三角形是否为钝角三角形(角度大于90度)的最佳方法是什么。

感谢阅读。

4 个答案:

答案 0 :(得分:2)

正如Abhishek Bansal所说,这是math.stackexchange.com的问题。

无论如何,我用3分向你展示数学过程,你应该把它作为代码实现:

A=(2,-3,4), B=(0,1,2), C=(-1,2,0)
vector AB = B-A = (0,1,2) - (2,-3,4) = (-2,4,-2)
vector AC = C-A = (-1,2,0) - (2,-3,4) = (-3,5,-4)
vector CB = B-C = (0,1,2) - (-1,2,0) = (1,-1,2)


AB.AC = ||AB||.||AC || cos α
(-2,4,-2).(-3,5,-4) = √(-2)²+(4)²+(-2)² . √(-3)²+(5)²+(-4)² .cos α
(-2)(-3)+(4)(5)+(-2)(-4) = √(24).√(50) .cos α
18 = 10√30 cos α 
cos α = 18/10√30 

“α”它在矢量之间是可能的,因此AB y AC es agudo

对其他案件也这样做:

AB.CB = ||AB||.||CB || cosβ 
AC.CB = ||AC||.|CB|| cosγ

答案 1 :(得分:2)

这样做的一个简单方法是, 鉴于3坐标, 通过标准公式

找出三角形的三边(X,Y,Z)的长度
length=√((x2-x1)^2+(y2-y1)^2)

现在提供了三角形, 采取最短的两个方面。 我们假设它们是X and Y。 现在,如果

Z^2 > (X^2+ Y^2)
然后三角形是钝的。

(可以从对于正三角形Z^2=(X^2 + Y^2)

的事实证明

答案 2 :(得分:0)

这实际上是一个数学问题,而不是java问题,因为答案非常依赖于语言。你需要拿走每一对的dot product

double x1, x2, x3, y1, y2, y3;
...
double dotAB = (x1 - x3) * (x2 - x3) + (y1 - y3) * (y2 - y3); // (A - C) * (B - C)
double dotBC = ... // ditto for (B - A) * (C - A)
double dotAC = ... // ditto for (A - B) * (C - B)
if(dotAB * dotBC * dotAC < 0){ OR if(dotAB < 0 || dotBC < 0 || dotAC < 0){
    // do obtuse processing
}

如果任何点积变为负数,则表示您有一个钝角三角形。由于三角形只能有一个钝角,所以将三者相乘可以告诉你其中一个是否也是负的。

答案 3 :(得分:0)

我认为我们可以通过以下步骤解决这个问题: -

  1. 使用两点公式之间的坐标几何距离计算三角形的三边,即dist(A,B)。这将给出三角形的三面

  2. 取两个给定三角形的短边并用它们来计算直角三角形的斜边。

  3. 将斜边与问题中给出的最长边进行比较。如果最长的给定边比斜边短,则给定的三角形是锐角。如果它比斜边长,则给定的三角形是钝的。