c++ - 用opencv计算cos(x)和sin(x)时出错

标签 c++ matlab qt opencv trigonometry

我不知道为什么当我使用 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.62070.620691455366943 四舍五入到小数点后四位。

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

你需要这样做:

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

关于c++ - 用opencv计算cos(x)和sin(x)时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37157313/

相关文章:

c++ - pthread_cond_broadcast 是如何工作的?

c# - 将 Matlab Datenum 转换为 Datetime

linux - 使用 -platform eglfs 运行 Qt5 应用程序时 i.MX6 上的段错误

matlab - Matlab 中的并行处理

qt - Qt中如何将时间戳转换为日期?

qt - QNetworkAccessManager - 完成信号永远不会触发插槽

C++ Boost 库几何.hpp

c++ - 使用 `.reload` 强制 WinDbg 加载 pdb 不起作用

C++在成员变量中保存不同类型数据的优雅方式

Matlab计算数组中所有(u,v)向量的最近邻距离