使用opencv

时间:2016-05-11 08:42:24

标签: c++ matlab qt opencv sin

我不知道为什么假设具有某个值的双重的sin()和cos()在使用Qt进行调试时会给出错误的值

这是我的代码:

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)

1 个答案:

答案 0 :(得分:4)

您获得了预期的结果,但未达到预期的结果 - 0.6207 0.620691455366943四舍五入到小数点后四位。

问题在于您使用逗号运算符(评估左侧),丢弃结果,并返回右侧的值。
也就是说,(cos(phi2), 0.0 , sin(phi2))的值为sin(phi2)(括号不会改变这一点)。

你需要这样做:

nor2 = Vec3d(cos(phi2), 0.0 , sin(phi2));