【问题标题】:Error when calculating cos (x) and sin (x) with opencv用opencv计算cos(x)和sin(x)时出错
【发布时间】:2016-05-11 08:42:24
【问题描述】:

我不知道为什么 double 的 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)

【问题讨论】:

  • phi2的值是多少?
  • phi2的值为0.669624292283149
  • (cos(phi2), 0.0 , sin(phi2)) 的值为sin(phi2)。如果你想要一个三个坐标的向量,写Vec3d(cos(phi2), 0.0 , sin(phi2))
  • @molbdnilo 你是什么意思?
  • @ner 逗号运算符计算左侧,丢弃结果,并返回右侧的值。即1,2的值为2。添加括号没有任何作用。

标签: c++ matlab qt opencv trigonometry


【解决方案1】:

您获得了预期的结果,但不在预期的位置 - 0.62070.620691455366943 舍入到小数点后四位。

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

你需要这样做:

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

【讨论】:

  • 谢谢@molbdnilo 这解决了我的问题并返回写入值
猜你喜欢
  • 2022-06-10
  • 2016-04-19
  • 1970-01-01
  • 2020-02-16
  • 2020-08-05
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多