与以下代码相比,使用DirectX矢量幅度数学函数有很大区别吗?
float hyp = sqrt(pow(globalVector.x, 2) + pow(globalVector.y, 2))
这还不够你关心。
我建议对你发布的功能进行一些改进。
无需调用幂函数;CCD_ 1和CCD_。
我会通过缩放来防止舍入,比如这个伪代码:
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);
}