gpt4 book ai didi

c++ - 规范化 vector 时浮点精度异常低

转载 作者:太空狗 更新时间:2023-10-29 19:49:43 26 4
gpt4 key购买 nike

我的代码中有一个简短的方法来归一化一个 vector (实际上是一个 PCL 点),它会产生低精度的结果。代码:

void normalize(pcl::PointXYZ::PointXYZ * p){
float nf = 1/sqrt(p->x*p->x+p->y*p->y+p->z*p->z);
//nf is a normalization factor precalculated to eliminate two FP divisions.
p->x*=nf; p->y*=nf; p->z*=nf;
}

此函数传递坐标为 (-0.850650787, 1.37638187, -0.525731087) 的点。调试显示在对第二行求值后 nf=0.587785244。当我在 Mathematica 中进行相同的计算时,nf=0.617708029。这是超过5%的误差! p 的坐标永远不会大于 2 或小于 -2。这种不准确是这些操作的典型特征,还是有什么问题?

最佳答案

根据我的计算,0.587785244 是正确的结果(我使用 Perl 得到 0.5877852727698576)。我怀疑您在 Mathematica 中的计算不正确。

关于c++ - 规范化 vector 时浮点精度异常低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com