Given coordinates of 3 vertices of a triangle in 3D i.e. A(x1, y1, z1), B(x2, y2, z2), C(x3, y3, z3). The task is to find out all the angles of the triangle formed by above coordinates.
Examples:
Input: x1 = -1, y1 = 3, z1 = 2 x2 = 2, y2 = 3, z2 = 5 x3 = 3, y3 = 5, z3 = -2 Output: angle A = 90.0 degree angle B = 54.736 degree angle C = 35.264 degree
Approach:
For finding angle A find out direction ratios of AB and AC :
direction ratios of AB = x2-x1, y2-y1, z2-z1
direction ratios of AC = x3-x1, y3-y1, z3-z1
then angle A =
For finding angle B find out direction ratios of BA and BC :
direction ratios of BA = x1-x2, y1-y2, z1-z2
direction ratios of BC = x3-x2, y3-y2, z3-z2
then angle B =
For finding angle C find out direction ratios of CB and CA :
direction ratios of CB = x2-x3, y2-y3, z2-z3
direction ratios of CA = x1-x3, y1-y3, z1-z3
then angle C =
Below is the implementation of above approach:
//CPP program for finding all angles of a triangle #include<bits/stdc++.h> #include<cmath> using namespace std;
// function for finding the angle float angle_triangle( int x1, int x2, int x3,
int y1, int y2, int y3, int z1, int z2, int z3)
{ int num = (x2-x1)*(x3-x1)+(y2-y1)*(y3-y1)+(z2-z1)*(z3-z1) ;
float den = sqrt ( pow ((x2-x1),2)+ pow ((y2-y1),2)+ pow ((z2-z1),2))*\
sqrt ( pow ((x3-x1),2)+ pow ((y3-y1),2)+ pow ((z3-z1),2)) ;
float angle = acos (num / den)*(180.0/3.141592653589793238463) ;
return angle ;
} // Driver code int main()
{ int x1 = -1;
int y1 = 3;
int z1 = 2;
int x2 = 2;
int y2 = 3;
int z2 = 5;
int x3 = 3;
int y3 = 5;
int z3 = -2;
float angle_A = angle_triangle(x1, x2, x3, y1, y2,
y3, z1, z2, z3);
float angle_B = angle_triangle(x2, x3, x1, y2, y3,
y1, z2, z3, z1);
float angle_C = angle_triangle(x3, x2, x1, y3,
y2, y1, z3, z2, z1);
cout<< "Angles are :" <<endl;
cout<<setprecision(3); cout<< "angle A = " <<angle_A<< " degree" <<endl;
cout<< "angle B = " <<angle_B<< " degree" <<endl;
cout<< "angle C = " <<angle_C<< " degree" <<endl;
} |
//Java program for finding all angles of a triangle class GFG{
// function for finding the angle static double angle_triangle( int x1, int x2, int x3,
int y1, int y2, int y3, int z1, int z2, int z3)
{ int num = (x2-x1)*(x3-x1)+(y2-y1)*(y3-y1)+(z2-z1)*(z3-z1) ;
double den = Math.sqrt(Math.pow((x2-x1), 2 )+
Math.pow((y2-y1), 2 )+Math.pow((z2-z1), 2 ))*
Math.sqrt(Math.pow((x3-x1), 2 )+
Math.pow((y3-y1), 2 )+Math.pow((z3-z1), 2 )) ;
double angle = Math.acos(num / den)*( 180.0 / 3.141592653589793238463 ) ;
return angle ;
} // Driver code public static void main(String[] args)
{ int x1 = - 1 ;
int y1 = 3 ;
int z1 = 2 ;
int x2 = 2 ;
int y2 = 3 ;
int z2 = 5 ;
int x3 = 3 ;
int y3 = 5 ;
int z3 = - 2 ;
double angle_A = angle_triangle(x1, x2, x3, y1,
y2, y3, z1, z2, z3);
double angle_B = angle_triangle(x2, x3, x1,
y2, y3, y1, z2, z3, z1);
double angle_C = angle_triangle(x3, x2, x1,
y3, y2, y1, z3, z2, z1);
System.out.println( "Angles are :" );
System.out.println( "angle A = " +angle_A+ " degree" );
System.out.println( "angle B = " +angle_B+ " degree" );
System.out.println( "angle C = " +angle_C+ " degree" );
} } // This code is contributed by mits |
# Python Code for finding all angles of a triangle import math
# function for finding the angle def angle_triangle(x1, x2, x3, y1, y2, y3, z1, z2, z3):
num = (x2 - x1) * (x3 - x1) + (y2 - y1) * (y3 - y1) + (z2 - z1) * (z3 - z1)
den = math.sqrt((x2 - x1) * * 2 + (y2 - y1) * * 2 + (z2 - z1) * * 2 ) * \
math.sqrt((x3 - x1) * * 2 + (y3 - y1) * * 2 + (z3 - z1) * * 2 )
angle = math.degrees(math.acos(num / den))
return round (angle, 3 )
# driver code x1 = - 1
y1 = 3
z1 = 2
x2 = 2
y2 = 3
z2 = 5
x3 = 3
y3 = 5
z3 = - 2
angle_A = angle_triangle(x1, x2, x3, y1, y2, y3, z1, z2, z3)
angle_B = angle_triangle(x2, x3, x1, y2, y3, y1, z2, z3, z1)
angle_C = angle_triangle(x3, x2, x1, y3, y2, y1, z3, z2, z1)
print ( "Angles are :" )
print ( "angle A = " , angle_A, "degree" )
print ( "angle B = " , angle_B, "degree" )
print ( "angle C = " , angle_C, "degree" )
|
// C# program for finding all // angles of a triangle using System;
class GFG
{ // function for finding the angle static double angle_triangle( int x1, int x2, int x3,
int y1, int y2, int y3,
int z1, int z2, int z3)
{ int num = (x2 - x1) * (x3 - x1) +
(y2 - y1) * (y3 - y1) +
(z2 - z1) * (z3 - z1);
double den = Math.Sqrt(Math.Pow((x2 - x1), 2) +
Math.Pow((y2 - y1), 2) +
Math.Pow((z2 - z1), 2)) *
Math.Sqrt(Math.Pow((x3 - x1), 2) +
Math.Pow((y3 - y1), 2) +
Math.Pow((z3 - z1), 2));
double angle = Math.Acos(num / den) *
(180.0/3.141592653589793238463);
return angle ;
} // Driver code public static void Main()
{ int x1 = -1, y1 = 3, z1 = 2;
int x2 = 2, y2 = 3, z2 = 5;
int x3 = 3, y3 = 5, z3 = -2;
double angle_A = angle_triangle(x1, x2, x3,
y1, y2, y3,
z1, z2, z3);
double angle_B = angle_triangle(x2, x3, x1,
y2, y3, y1,
z2, z3, z1);
double angle_C = angle_triangle(x3, x2, x1,
y3, y2, y1,
z3, z2, z1);
Console.WriteLine( "Angles are :" );
Console.WriteLine( "angle A = " + angle_A +
" degree" );
Console.WriteLine( "angle B = " + angle_B +
" degree" );
Console.WriteLine( "angle C = " + angle_C +
" degree" );
} } // This code is contributed by 29AjayKumar |
<?php // PHP program for finding all // angles of a triangle // function for finding the angle function angle_triangle( $x1 , $x2 , $x3 ,
$y1 , $y2 , $y3 ,
$z1 , $z2 , $z3 )
{ $num = ( $x2 - $x1 ) * ( $x3 - $x1 ) +
( $y2 - $y1 ) * ( $y3 - $y1 ) +
( $z2 - $z1 ) * ( $z3 - $z1 );
$den = sqrt(pow(( $x2 - $x1 ), 2) +
pow(( $y2 - $y1 ), 2) +
pow(( $z2 - $z1 ), 2)) *
sqrt(pow(( $x3 - $x1 ), 2) +
pow(( $y3 - $y1 ), 2) +
pow(( $z3 - $z1 ), 2));
$angle = acos ( $num / $den ) *
(180.0 / 3.141592653589793238463);
return $angle ;
} // Driver code $x1 = -1; $y1 = 3; $z1 = 2;
$x2 = 2; $y2 = 3; $z2 = 5;
$x3 = 3; $y3 = 5; $z3 = -2;
$angle_A = angle_triangle( $x1 , $x2 , $x3 , $y1 , $y2 ,
$y3 , $z1 , $z2 , $z3 );
$angle_B = angle_triangle( $x2 , $x3 , $x1 , $y2 , $y3 ,
$y1 , $z2 , $z3 , $z1 );
$angle_C = angle_triangle( $x3 , $x2 , $x1 , $y3 ,
$y2 , $y1 , $z3 , $z2 , $z1 );
echo "Angles are :\n" ;
echo "angle A = " . round ( $angle_A , 3) . " degree\n" ;
echo "angle B = " . round ( $angle_B , 3) . " degree\n" ;
echo "angle C = " . round ( $angle_C , 3) . " degree\n" ;
// This code is contributed by mits ?> |
<script> //Javascript program for finding all angles of a triangle // function for finding the angle function angle_triangle(x1,x2,x3,y1,y2,y3,z1,z2,z3)
{ let num = (x2-x1)*(x3-x1)+(y2-y1)*(y3-y1)+(z2-z1)*(z3-z1) ;
let den = Math.sqrt(Math.pow((x2-x1),2)+
Math.pow((y2-y1),2)+Math.pow((z2-z1),2))*
Math.sqrt(Math.pow((x3-x1),2)+
Math.pow((y3-y1),2)+Math.pow((z3-z1),2)) ;
let angle = Math.acos(num / den)*(180.0/3.141592653589793238463) ;
return angle ;
} // Driver code let x1 = -1; let y1 = 3; let z1 = 2; let x2 = 2; let y2 = 3; let z2 = 5; let x3 = 3; let y3 = 5; let z3 = -2; let angle_A = angle_triangle(x1, x2, x3, y1, y2, y3, z1, z2, z3);
let angle_B = angle_triangle(x2, x3, x1, y2, y3, y1, z2, z3, z1);
let angle_C = angle_triangle(x3, x2, x1, y3, y2, y1, z3, z2, z1);
document.write( "Angles are :<br>" );
document.write( "angle A = " +angle_A+ " degree<br>" );
document.write( "angle B = " +angle_B.toFixed(3)+ " degree<br>" );
document.write( "angle C = " +angle_C.toFixed(3)+ " degree<br>" );
// This code is contributed by rag2127 </script> |
Output:
Angles are : angle A = 90.0 degree angle B = 54.736 degree angle C = 35.264 degree
Time Complexity: O(logn)
Auxiliary Space: O(1)