求给定三角形的所有角度

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

null
Input : A = (0, 0),         B = (0, 1),         C = (1, 0)Output : 90, 45, 45

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

all angles of a given triangle

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

重新安排之后

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

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

First, calculate the length of all the sides. Then apply above formula to get all angles in radian. Then convert angles from radian into degrees.

以下是上述步骤的实施。

C++

// Code to find all three angles
// of a triangle given coordinate
// of all three vertices
#include <iostream>
#include <utility> // for pair
#include <cmath> // for math functions
using namespace std;
#define PI 3.1415926535
// returns square of distance b/w two points
int lengthSquare(pair< int , int > X, pair< int , int > Y)
{
int xDiff = X.first - Y.first;
int yDiff = X.second - Y.second;
return xDiff*xDiff + yDiff*yDiff;
}
void printAngle(pair< int , int > A, pair< int , int > B,
pair< int , int > 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 = sqrt (a2);
float b = sqrt (b2);
float c = sqrt (c2);
// From Cosine law
float alpha = acos ((b2 + c2 - a2)/(2*b*c));
float beta = acos ((a2 + c2 - b2)/(2*a*c));
float gamma = acos ((a2 + b2 - c2)/(2*a*b));
// Converting to degree
alpha = alpha * 180 / PI;
beta = beta * 180 / PI;
gamma = gamma * 180 / PI;
// printing all the angles
cout << "alpha : " << alpha << endl;
cout << "beta : " << beta << endl;
cout << "gamma : " << gamma << endl;
}
// Driver code
int main()
{
pair< int , int > A = make_pair(0,0);
pair< int , int > B = make_pair(0,1);
pair< int , int > C = make_pair(1,0);
printAngle(A,B,C);
return 0;
}


JAVA

// Java Code to find all three angles
// of a triangle given coordinate
// of all three vertices
import java.awt.Point;
import static java.lang.Math.PI;
import static java.lang.Math.sqrt;
import static java.lang.Math.acos;
class Test
{
// 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 )sqrt(a2);
float b = ( float )sqrt(b2);
float c = ( float )sqrt(c2);
// From Cosine law
float alpha = ( float ) acos((b2 + c2 - a2)/( 2 *b*c));
float betta = ( float ) acos((a2 + c2 - b2)/( 2 *a*c));
float gamma = ( float ) acos((a2 + b2 - c2)/( 2 *a*b));
// Converting to degree
alpha = ( float ) (alpha * 180 / PI);
betta = ( float ) (betta * 180 / PI);
gamma = ( float ) (gamma * 180 / PI);
// printing all the angles
System.out.println( "alpha : " + alpha);
System.out.println( "betta : " + betta);
System.out.println( "gamma : " + gamma);
}
// Driver method
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);
}
}


Python3

# Python3 code to find all three angles
# of a triangle given coordinate
# of all three vertices
import math
# returns square of distance b/w two points
def lengthSquare(X, Y):
xDiff = X[ 0 ] - Y[ 0 ]
yDiff = X[ 1 ] - Y[ 1 ]
return xDiff * xDiff + yDiff * yDiff
def printAngle(A, B, C):
# Square of lengths be a2, b2, c2
a2 = lengthSquare(B, C)
b2 = lengthSquare(A, C)
c2 = lengthSquare(A, B)
# length of sides be a, b, c
a = math.sqrt(a2);
b = math.sqrt(b2);
c = math.sqrt(c2);
# From Cosine law
alpha = math.acos((b2 + c2 - a2) /
( 2 * b * c));
betta = math.acos((a2 + c2 - b2) /
( 2 * a * c));
gamma = math.acos((a2 + b2 - c2) /
( 2 * a * b));
# Converting to degree
alpha = alpha * 180 / math.pi;
betta = betta * 180 / math.pi;
gamma = gamma * 180 / math.pi;
# printing all the angles
print ( "alpha : %f" % (alpha))
print ( "betta : %f" % (betta))
print ( "gamma : %f" % (gamma))
# Driver code
A = ( 0 , 0 )
B = ( 0 , 1 )
C = ( 1 , 0 )
printAngle(A, B, C);
# This code is contributed
# by ApurvaRaj


C#

// 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 : 90beta : 45gamma : 45

参考 : https://en.wikipedia.org/wiki/Law_of_cosines 本文由 普拉提克·切哈杰 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享