内置幅度函数与此代码之间的性能差异

时间:2012-02-24 15:11:29

标签: math directx directx-10

使用DirectX矢量幅度数学函数与下面的代码相比有什么不同吗?

float hyp = sqrt(pow(globalVector.x, 2) + pow(globalVector.y, 2))

1 个答案:

答案 0 :(得分:2)

不足以照顾你。

我建议您对所发布的功能进行改进。

无需调用电源功能; x*xy*y同样优秀且便宜。

我会通过缩放来防止舍入,就像这个伪代码一样:

if (abs(x) > abs(y)) {
   r = abs(y/x);
   hyp = x*sqrt(1 + r*r);
} else {
    r = abs(x/y);
    hyp = y*sqrt(1 + r*r);
}