我需要帮助在给定长度的情况下找到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;
}
答案 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)。这不能仅根据长度或您提供的信息来确定。