Eigen::Isometry3d的用法(pretranslate、translate、prerotate、rotate的区别)

这篇具有很好参考价值的文章主要介绍了Eigen::Isometry3d的用法(pretranslate、translate、prerotate、rotate的区别)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 
  1. pretranslate、prerotate表示左乘,即以世界坐标为参考
  2. translate、rotate表示右乘,即以局部坐标系为参考

下面以直线L做45度旋转和向X方向移动200像素两次线性变换为例子:

        

    isometry1.rotate(axisd);//右乘(局部坐标参考)
    isometry1.translate(Eigen::Vector3d(200,0,0));

    isometry2.prerotate(axisd);//左乘(世界坐标参考)
    isometry2.pretranslate(Eigen::Vector3d(200,0,0));

eigen::isometry3d,C++,3d

第一次变换,旋转45度,由于变换之前局部坐标系和世界坐标系重合,所以rotate和prerotate的结果一样,旋转之后局部坐标系和世界坐标系右45度夹角

eigen::isometry3d,C++,3d

第二次变换,向X方向移动200像素,pretranslate是以世界坐标系为参考,所以平移向右边移动;

translate是以局部坐标系为参考,所以平移向右下角45度方向移动

QT代码如下:文章来源地址https://www.toymoban.com/news/detail-733931.html

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setWindow(-400,-300,800,600);

    QPointF p1(0,0), p2 (100,0);
    Eigen::Vector3d v1{p1.x(),p1.y(),0};
    Eigen::Vector3d v2{p2.x(),p2.y(),0};

    Eigen::AngleAxisd axisd(45*3.1415926/180, Eigen::Vector3d::UnitZ());

    Eigen::Isometry3d isometry1=Eigen::Isometry3d::Identity(),isometry2=Eigen::Isometry3d::Identity();

    isometry1.rotate(axisd);//右乘(局部坐标参考)
    isometry1.translate(Eigen::Vector3d(200,0,0));

    Eigen::Vector3d v3 = isometry1*v1;
    Eigen::Vector3d v4 = isometry1*v2;

    isometry2.prerotate(axisd);//左乘(世界坐标参考)
    isometry2.pretranslate(Eigen::Vector3d(200,0,0));

    Eigen::Vector3d v5 = isometry2*v1;
    Eigen::Vector3d v6 = isometry2*v2;

    painter.drawLine(p1, p2);
    painter.setPen(Qt::red);
    painter.drawLine(QPointF(v3.x(), v3.y()), QPointF(v4.x(), v4.y()));
    painter.setPen(Qt::green);
    painter.drawLine(QPointF(v5.x(), v5.y()), QPointF(v6.x(), v6.y()));
}

到了这里,关于Eigen::Isometry3d的用法(pretranslate、translate、prerotate、rotate的区别)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSS3过渡、过渡练习——进度条案例、2D转换(translate、rotate、scale、转换中心点transform-origin)、动画、3D、案例(两面翻转的盒子、3D导航栏、旋转木马案例)

    目录 一、CSS3过渡(transition)(重点) 二、CSS3过渡练习——进度条案例 三、CSS3 2D转换(translate、rotate、scale、转换中心点transform-origin) 四、CSS3 动画 五、CSS3动画常见属性 五、热点图案例(动画) 六、速度曲线之steps步长(案例——奔跑的熊大) 七、CSS3 3D转换(3D 位移:t

    2024年02月03日
    浏览(47)
  • 【Pytorch】三维卷积 nn.Conv3d 用法

    nn.Conv3d 是 PyTorch 中实现三维卷积操作的类。 其输入和输出的维度如下: 输入维度: 输入张量的维度应为 (N, C_in, D, H, W) ,其中: N : 批量大小 (batch size),即一批输入数据中包含的样本数量。 C_in : 输入通道数 (number of input channels),即输入数据的通道数量,例如彩色图像通常

    2024年02月05日
    浏览(49)
  • [Eigen中文文档] 深入了解 Eigen - Eigen内部发生了什么(二)

    文档总目录 英文原文(What happens inside Eigen, on a simple example) 求和表达式的构造 现在我们的向量已经构建完毕,让我们继续下一行: 操作符 + 返回一个“向量之和”表达式,但实际上此时并不执行计算。执行计算的是运算符 = (其调用随后发生)。 现在让我们看看 Eigen 这时做

    2024年02月13日
    浏览(38)
  • [Eigen中文文档] 深入了解 Eigen - Eigen内部发生了什么(一)

    文档总目录 英文原文(What happens inside Eigen, on a simple example) 考虑以下示例程序: 本页的目标是了解 Eigen 如何编译,假设启用了 SSE2 矢量化(GCC 选项 -msse2 )。 为什么讨论这个问题 也许你认为上面的示例程序很简单,编译它应该不涉及任何非常有趣的事情。在开始之前,让我

    2024年02月13日
    浏览(37)
  • Pytorch3d中的倒角损失函数Chamfer Distance Loss的用法(pytorch3d.loss.chamfer_distance)

    API文档在这里 源码在这里 之前看到的一个干货满满的Pytorch3D安装指导与简单例子的帖子在这里  官方tutorials中提到的用法在下面这个代码块里面,前面后面东西都挺多的就把和chamfer_distance相关的摘到了这里

    2024年02月15日
    浏览(47)
  • [Eigen中文文档] 在 CMake 项目中使用 Eigen

    文档总目录 英文原文(Using Eigen in CMake Projects) Eigen提供了CMake支持,使得该库可以轻松地在CMake项目中使用。 注意:启用这个功能需要CMake 3.0(或更高版本)。 Eigen提供了一个CMake示例,名为 Eigen3::Eigen ,可以使用 find_package CMake 命令导入,并通过调用 target_link_libraries 来使用,

    2024年02月17日
    浏览(41)
  • linux安装eigen/osqp/osqp_eigen库

    因为个人的需求:本人论文的车辆纵向控制算法为MPC算法,需要用到C/C++语言的二次规划求解器(OSQP)和矩阵运算库eigen。因此,在编写MPC代码之前,是需要在Linux下部署以下三个矩阵计算库 链接: eigen-3.4.0库下载地址 1.1 将下载好的eigen-3.4.0文件夹拷贝到主目录下,进入到eigen-

    2024年02月01日
    浏览(32)
  • echarts地图的常见用法:基本使用、区域颜色分级、水波动画、区域轮播、给地图添加背景图片和图标、3d地图

    最近几天用echarts做中国地图,就把以前写的demo:在vue中实现中国地图 拿来用,结果到项目里直接报错了,后来发现是因为版本的问题,没办法只能从头进行踩坑了。以下内容基于 vue3 和 echarts 5.32 常用的功能应该就这些,已经非常全了,创作不易,觉得不错就点个赞。 获取

    2023年04月15日
    浏览(51)
  • NLP——Translation 机器翻译

    基于统计的机器翻译任务通常通过翻译模型(Translation Model)和语言模型(Language Model)的结合来学习更强大的翻译模型。这种结合被称为统计机器翻译(SMT)。 翻译模型(Translation Model):翻译模型主要关注如何将源语言句子翻译成目标语言句子。它使用双语语料库进行训练

    2024年02月09日
    浏览(91)
  • 【IDEA】配置翻译插件【Translate】

    背景:2022.10 谷歌翻译也不在中国了,默认谷歌翻译已不能使用 1、idea安装插件- Translate 2、打开idea设置 settings - 工具 - 翻译 ​ 翻译引擎选择有道词典,点击配置 输入第三步获取的id,密钥 3、获取的id,密钥获取 进入有道云平台 ​ https://ai.youdao.com/console/#/app-overview

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包