写一个余弦计算法则

时间:2017-02-12 11:34:28

标签: c excel math trigonometry

我试图在C中创建一个函数,它使用余弦定律返回与给定角度相反的三角形边长。

现在我得到了在excel中工作的公式,它给出了正确的结果。然而,当我在C中尝试它时,我得到了错误的结果,我无法理解为什么。

对于测试,我将sideA视为21.1,将sideB视为19,将它们之间的角度设为40度。现在答案应该是14.9,就像我进入excel一样。但是在C中我得到了23.735。请有人帮我解决出错的地方

// Find the length of a side of a triangle that is oppisit a given angle using the Law Of Cosine
// for example using an triangle that is 21.1cm on one side, 19 cm on the other and an angle of 40 degreese inbetween then....
// in excel it worked and the formuler was  =SQRT(POWER(23.1;2)+POWER(19;2)-2*(23.1)*(19)*COS(40*(3.14159/180))) = 14.9 cm
float my_Trig_LawOfCos_OppSideLength(float centerAngle, float sideA, float sideB)
    {
        float sideLengthPow2= (pow(sideA,2) + pow(sideB,2))) - ((2*sideA*sideB)*cos(centerAngle*(3.14159/180));
        float sideLength = sqrt(sideLengthPow2);
        return sideLength;
    }

1 个答案:

答案 0 :(得分:2)

如果以错误的顺序传递参数,就会发生这种情况。您将边长23.1放在角度的位置。

def oppside(ang, lA, lB): return (lA**2+lB**2-2*(lA)*(lB)*cos(ang*(pi/180)))**0.5

oppside(40,19,23.1)
>>> 14.905575729577208

oppside(19,23.1,40)
>>> 19.65430416708927

oppside(23.1,19,40)
>>> 23.72490935854042

通常,您可以通过生成显示错误结果的最小可执行示例来查找此类错误,因为这样您还可以记录错误的函数调用(甚至可能会自己查看它)。