码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 根据两向量求旋转矩阵(C++)


    目录

    • 一、库及VS code中的配置
      • 1.1需要的库
      • 1.2 VS Code配置
    • 二、求两向量旋转矩阵,并进行点云变换


    Windows 10(64bits) + VMware 16 Pro + Ubuntu 20.04 + VS Code 2022
    PCL 1.10 + Eigen3


    一、库及VS code中的配置

    1.1需要的库

    PCL库
    Eigen库

    1.2 VS Code配置

    直接使用文本编辑器写代码的时候,库是由CMakeLists.txt进行链接的,但是用VS Code打开是,代码头文件中PCL库和Eigen库下面会有波浪线,像这样:
    在这里插入图片描述
    配置过程:
    ctrl+shift+P——>C/C++:Edit Configuration中增加库的文件路径,库文件通常在/usr/include/中,或者对应上自己库的位置就可以。
    这里要注意的是:
    #include 需要Eigen库的依赖,如果只添加了PCL库,这一条头文件还会有波浪线,可以自己试一下看看。

    {
        "configurations": [
            {
                "name": "Linux",
                "includePath": [
                    "${workspaceFolder}/**",
                    "/usr/include/pcl-1.10", 
                    "/usr/include/eigen3"
                ],
                "defines": [],
                "compilerPath": "/usr/bin/gcc",
                "cStandard": "gnu17",
                "cppStandard": "gnu++14",
                "intelliSenseMode": "linux-gcc-x64"
            }
        ],
        "version": 4
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    二、求两向量旋转矩阵,并进行点云变换

    旋转矩阵是33的,变换矩阵是44的,变换矩阵最后一列是平移向量。求两向量的旋转矩阵由Eigen完成,省去很多敲公式的时间。

    //创建两个向量
    Eigen::Vector3d VectorBefore(a, b, c);
    Eigen::Vector3d VectorAfter(x, y, z);
    
    //创建旋转矩阵、变换矩阵、位移向量
    Eigen::Matrix3d rotationMatrix;
    Eigen::Matrix4d transformMatrix;
    transformMatrix.setIdentity();
    Eigen::Vector3d t(0, 0, 0);
    
    //求两向量旋转矩阵
    rotationMatrix = Eigen::Quaterniond::FromTwoVectors(VectorBefore, VectorAfter).toRotationMatrix();
    
    //旋转矩阵和平移向量凑成变换矩阵
    transformMatrix.block<3, 3>(0, 0) = rotationMatrix;
    transformMatrix.topRightCorner(3, 1) = t;
    
    //点云变换
    pcl::transformPointCloud(*cloud_in, *cloud_out, transformMatrix);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    Eigen库使用教程: C++矩阵库 Eigen 快速入门

  • 相关阅读:
    CIO40--数字化转型之回报效益ROI(含表格)
    golang--module
    【计算机网络】已解决:“‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”报错
    极智AI | 三谈昇腾 auto tune
    Flask博客实战 - 实现个人中心及权限管理
    【JVM】分代收集和垃圾收集算法详解
    adobe pdf 合并文件后提示“无法提取嵌入的字体”问题解决方法
    springboot + mybatis +mysql 5.7 不使用xmlmapper操作
    关于网络协议的若干问题(四)
    linux Shell入门
  • 原文地址:https://blog.csdn.net/abanchao/article/details/127849012
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号