您的位置:首页 > 游戏 > 手游 > 工程造价接单平台_上海门户网站制作_google推广妙招_15个常见关键词

工程造价接单平台_上海门户网站制作_google推广妙招_15个常见关键词

2025/1/8 6:06:11 来源:https://blog.csdn.net/hefeng_aspnet/article/details/144345613  浏览:    关键词:工程造价接单平台_上海门户网站制作_google推广妙招_15个常见关键词
工程造价接单平台_上海门户网站制作_google推广妙招_15个常见关键词

 给定三角形在二维平面上所有三个顶点的坐标,任务是找到所有三个角度。
示例: 

输入:A = (0, 0), 
        B = (0, 1), 
        C = (1, 0)
输出:90, 45, 45
 

为了解决这个问题,我们使用下面的余弦定律。 

c^2 = a^2 + b^2 - 2(a)(b)(cos beta)

重新安排后 

beta = acos( ( a^2 + b^2 - c^2 ) / (2ab) )

在三角学中,余弦定律(也称为余弦公式或余弦规则)将三角形边的长度与其某个角的余弦联系起来。

首先,计算所有边的长度。然后应用上述公式得到所有角度的弧度。然后将角度从弧度转换为度数。

以下是上述步骤的实施:

// C# Code to find all three angles 
// of a triangle given coordinate 
// of all three vertices 
using System; 
      
class GFG 

    class Point 
    { 
        public int x, y; 
        public Point(int x, int y) 
        { 
            this.x = x; 
            this.y = y; 
        } 
    } 
      
    // returns square of distance b/w two points 
    static int lengthSquare(Point p1, Point p2) 
    { 
        int xDiff = p1.x - p2.x; 
        int yDiff = p1.y - p2.y; 
        return xDiff * xDiff + yDiff * yDiff; 
    } 
      
    static void printAngle(Point A, Point B, Point C) 
    { 
        // Square of lengths be a2, b2, c2 
        int a2 = lengthSquare(B, C); 
        int b2 = lengthSquare(A, C); 
        int c2 = lengthSquare(A, B); 
          
        // length of sides be a, b, c 
        float a = (float)Math.Sqrt(a2); 
        float b = (float)Math.Sqrt(b2); 
        float c = (float)Math.Sqrt(c2); 
          
        // From Cosine law 
        float alpha = (float) Math.Acos((b2 + c2 - a2) /  
                                           (2 * b * c)); 
        float betta = (float) Math.Acos((a2 + c2 - b2) /  
                                           (2 * a * c)); 
        float gamma = (float) Math.Acos((a2 + b2 - c2) /  
                                           (2 * a * b)); 
          
        // Converting to degree 
        alpha = (float) (alpha * 180 / Math.PI); 
        betta = (float) (betta * 180 / Math.PI); 
        gamma = (float) (gamma * 180 / Math.PI); 
          
        // printing all the angles 
        Console.WriteLine("alpha : " + alpha); 
        Console.WriteLine("betta : " + betta); 
        Console.WriteLine("gamma : " + gamma); 
    } 
      
    // Driver Code 
    public static void Main(String[] args)  
    { 
        Point A = new Point(0, 0); 
        Point B = new Point(0, 1); 
        Point C = new Point(1, 0); 
      
        printAngle(A, B, C); 
    } 

  
// This code is contributed by Rajput-Ji  

 输出: 

alpha : 90
beta : 45
gamma : 45

时间复杂度:由于使用内置 sqrt 函数,因此为 O(log(n))

辅助空间: O(1)

参考: 
https://en.wikipedia.org/wiki/Law_of_cosines

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com