首页 文章

检查三角形是否为钝角三角形[关闭]

提问于
浏览
0

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

谢谢阅读 .

4 回答

  • 2

    这实际上是一个数学问题而不是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
    }
    

    如果任何点积都是负数,那么你就有一个钝角三角形 . 由于三角形只能有一个钝角,所以将三者相乘可以告诉你其中一个是否也是负的 .

  • 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γ
    
  • 0

    一个简单的方法是,给定3个坐标,通过标准公式找出三角形的3边(X,Y,Z)的长度

    length=√((x2-x1)^2+(y2-y1)^2)
    

    现在提供三角形存在,取2个最短边 . 让我们假设他们是 X and Y . 现在如果

    Z^2 > (X^2+ Y^2)
    

    然后三角形是钝的 .

    (可以从对于正三角形的事实证明, Z^2=(X^2 + Y^2)

  • 0

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

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

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

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

相关问题