Trouver tous les angles d'un triangle donné

Trouver tous les angles d'un triangle donné

Étant donné les coordonnées des trois sommets du triangle dans le plan 2D, la tâche consiste à trouver les trois angles.
Exemple:  
 

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


 


Pour résoudre ce problème, nous utilisons ci-dessous Loi des cosinus
 

tous les angles d


 

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


Après avoir réorganisé 
 

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


En trigonométrie, la loi des cosinus (également connue sous le nom de formule du cosinus ou règle du cosinus) relie les longueurs des côtés d'un triangle au cosinus de l'un de ses angles.
 

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. 


Vous trouverez ci-dessous la mise en œuvre des étapes ci-dessus. 
 

C++
   // Code to find all three angles   // of a triangle given coordinate   // of all three vertices   #include          #include         // for pair   #include         // 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   
JavaScript
   // JavaScript program    // Code to find all three angles   // of a triangle given coordinate   // of all three vertices   // returns square of distance b/w two points   function     lengthSquare  (  X       Y  ){      let     xDiff     =     X  [  0  ]     -     Y  [  0  ];      let     yDiff     =     X  [  1  ]     -     Y  [  1  ];      return     xDiff  *  xDiff     +     yDiff  *  yDiff  ;   }   function     printAngle  (  A       B       C  ){          // Square of lengths be a2 b2 c2      let     a2     =     lengthSquare  (  B    C  );      let     b2     =     lengthSquare  (  A    C  );      let     c2     =     lengthSquare  (  A    B  );      // length of sides be a b c      let     a     =     Math  .  sqrt  (  a2  );      let     b     =     Math  .  sqrt  (  b2  );      let     c     =     Math  .  sqrt  (  c2  );      // From Cosine law      let     alpha     =     Math  .  acos  ((  b2     +     c2     -     a2  )  /  (  2  *  b  *  c  ));      let     beta     =     Math  .  acos  ((  a2     +     c2     -     b2  )  /  (  2  *  a  *  c  ));      let     gamma     =     Math  .  acos  ((  a2     +     b2     -     c2  )  /  (  2  *  a  *  b  ));      // Converting to degree      alpha     =     alpha     *     180     /     Math  .  PI  ;      beta     =     beta     *     180     /     Math  .  PI  ;      gamma     =     gamma     *     180     /     Math  .  PI  ;      // printing all the angles      console  .  log  (  'alpha : '       alpha  );      console  .  log  (  'beta : '       beta  );      console  .  log  (  'gamma : '       gamma  );   }   // Driver code   let     A     =     [  0       0  ];   let     B     =     [  0       1  ];   let     C     =     [  1       0  ];   printAngle  (  A    B    C  );   // The code is contributed by Gautam goel (guatamgoel962)   

Sortir:  
 

alpha : 90 beta : 45 gamma : 45 

Complexité temporelle : O(log(n)) depuis l'utilisation des fonctions sqrt intégrées

Espace auxiliaire : O(1)

Référence
https://en.wikipedia.org/wiki/Law_of_cosines
 

Créer un quiz