用opencv计算cos(x)和sin(x)时出错
Error when calculating cos (x) and sin (x) with opencv
我不知道为什么当我使用 Qt 进行调试时,double 的 sin() 和 cos() 应该具有特定的值却给我错误的值
这是我的代码:
Vec3d nor2 ( 0.0 ,0.0 ,0.0);
double jphi = 0.0 ;
double phi2 = 0.0 ;
for (int i = 0; i < 800; i++)
{
double jphi = (i+1) * step_phi - phimax ;
double phi2 = phi_0 + CV_PI * jphi / 180.0 ;
// apply partial phi-rotation in (x-z) plane
nor2 = (cos(phi2), 0.0 , sin(phi2));
}
nor2 = (0.620691455366943 , 0 , 0)
第一次迭代的值
当我用 matlab 做的时候,它给了我 nor2 = (0.7841 , 0 , 0.6207)
您得到了预期的结果,但未达到预期的位置 - 0.6207
已 0.620691455366943
四舍五入到小数点后四位。
问题是您使用的是逗号运算符,它计算左侧的值,丢弃结果,returns 右侧的值。
也就是说,(cos(phi2), 0.0 , sin(phi2))
的值是 sin(phi2)
(括号不会改变这一点)。
您需要这样做:
nor2 = Vec3d(cos(phi2), 0.0 , sin(phi2));
我不知道为什么当我使用 Qt 进行调试时,double 的 sin() 和 cos() 应该具有特定的值却给我错误的值
这是我的代码:
Vec3d nor2 ( 0.0 ,0.0 ,0.0);
double jphi = 0.0 ;
double phi2 = 0.0 ;
for (int i = 0; i < 800; i++)
{
double jphi = (i+1) * step_phi - phimax ;
double phi2 = phi_0 + CV_PI * jphi / 180.0 ;
// apply partial phi-rotation in (x-z) plane
nor2 = (cos(phi2), 0.0 , sin(phi2));
}
nor2 = (0.620691455366943 , 0 , 0)
第一次迭代的值
当我用 matlab 做的时候,它给了我 nor2 = (0.7841 , 0 , 0.6207)
您得到了预期的结果,但未达到预期的位置 - 0.6207
已 0.620691455366943
四舍五入到小数点后四位。
问题是您使用的是逗号运算符,它计算左侧的值,丢弃结果,returns 右侧的值。
也就是说,(cos(phi2), 0.0 , sin(phi2))
的值是 sin(phi2)
(括号不会改变这一点)。
您需要这样做:
nor2 = Vec3d(cos(phi2), 0.0 , sin(phi2));