为什么这种三角函数代码是这样编写的?

时间:2014-11-21 01:21:08

标签: c# optimization trigonometry sin cos

我正在阅读其他人在C#中编写的代码,并且我遇到了类似于以下内容的函数:

public double calculate(double radianAngle)
{
    double sine = Math.Sin(radianAngle);
    double cosine;
    if(angle > 0.0 && angle < Math.PI / 2.0)
        cosine = Math.Sqrt(1.0 - sine * sine);
    else
        cosine = Math.Cos(radianAngle);

    // ... unrelated code here

    return resultThatUsesSineAndCosine;
}

这段代码似乎指的是数学身份:

(cos(x))^2 = 1 - (sin(x))^2

但为什么你需要为此添加一个if语句?如果它恰好等于Math.Cos(radianAngle),那为什么首先呢?是否有更准确的原因?或者这是微观优化?或者可能是这个代码在另一种语言(C ++)中进行了微优化,然后移植到C#,微优化完好无损?即使是微优化,为什么它只适用于0和pi / 2之间的角度?

0 个答案:

没有答案