给定长度的2条线之间的角度

时间:2014-07-22 23:35:12

标签: c++ math

我需要帮助在给定长度的情况下找到2条线之间的角度,我找到的解决方案适用于某些角度。我更喜欢一个导致0到360度的解决方案,但它并不重要。

 Angle i need lies between s1 and s2.

   s1  (2m)
  _________                        /|
           |  works        s1(2m) / |  
           |                     /  |s2(2m)
    s3     | s2(2m)             /   |
           |                     s3

//s3 is calculated from the start point of s1 and end of s2.

//this works for some angles but not all the time.
double GetAngle(double s1,double s2,double s3)
{
    double r=acos((pow(s1,2)+pow(s2,2)-pow(s3,2))/2*s1*s2);
    r=((180.0*a)/M_PI);
    return r;
}

1 个答案:

答案 0 :(得分:0)

我假设您需要的是一个函数,它取三角形的三边长度并返回其中一个角度。这需要应用余弦规则,如评论中所述。

double GetAngle(double s1, double s2, double s3) {
    double r = acos((pow(s1, 2) + pow(s2, 2) - pow(s3, 2)) / (2 * s1 * s2));
    return (180.0 * r / PI);
}

此时你有三角形的内角。如果您确实需要点或线之间的方位,则必须应用第二个条件来确定是否使用(例如)角度A或(360 - A)。这不能仅根据长度或您提供的信息来确定。