当前位置: 首页 > news >正文

广州微型网站建设yw55521can优物入口

广州微型网站建设,yw55521can优物入口,做视频网站需要多大带宽,搜索风云榜本文参考:计算机视觉life 仅作笔记用 书接上回,上回不清不楚的介绍了旋转矩阵&旋转向量和四元组 现在回顾一下重点: 本着绕谁谁不变的变则 假设绕z轴旋转θ,旋转矩阵为: 再回顾一下旋转向量的表示以及这个基本记不…

本文参考:计算机视觉life 仅作笔记用
书接上回,上回不清不楚的介绍了旋转矩阵&旋转向量和四元组
现在回顾一下重点:
本着绕谁谁不变的变则
假设绕z轴旋转θ,旋转矩阵为:
在这里插入图片描述
再回顾一下旋转向量的表示以及这个基本记不住的罗德里格斯公式,记不住也没事:
在这里插入图片描述

一个例子

已知旋转矩阵定义是沿着Z轴旋转45°。请按照该定义初始化旋转向量、旋转矩阵、四元数、欧拉角。请编程实现:

1、以上四种表达方式的相互转换关系并输出,并参考给出的结果验证是否正确。

2、假设平移向量为(1,2,3),请输出旋转矩阵和该平移矩阵构成的欧式变换矩阵,并根据欧式变换矩阵提取旋转向量及平移向量。

#include <iostream>
#include <Eigen/Dense>using namespace Eigen;int main() {// 初始化旋转参数double angle = M_PI/4; // 45°转换为弧度Vector3d axis = Vector3d::UnitZ(); // Z轴// 初始化旋转向量Vector3d rotation_vector = angle * axis;// 初始化旋转矩阵Matrix3d rotation_matrix;// AngleAxisd(angle, axis) 创建了一个表示绕着给定轴 axis 旋转 angle 弧度的旋转向量。//在Eigen库中,AngleAxisd 类表示一个旋转向量,它由一个旋转轴和一个旋转角度组成。//它的构造函数可以接受旋转角度和旋转轴作为参数,也可以接受一个旋转矩阵作为参数,并从中提取旋转轴和旋转角度。//调用 toRotationMatrix() 方法将该旋转向量转换为对应的旋转矩阵。rotation_matrix = AngleAxisd(angle, axis).toRotationMatrix();// 初始化四元数Quaterniond quaternion(rotation_matrix);// 初始化欧拉角Vector3d euler_angles = rotation_matrix.eulerAngles(2, 1, 0); // ZYX顺序// 输出四种表达方式 // 旋转向量std::cout << "Rotation Vector: " << rotation_vector.transpose() << std::endl;  // .transpose()方法被用于将向量和矩阵输出成为行向量的形式,以方便显示在控制台上。// 旋转矩阵std::cout << "Rotation Matrix:\n" << rotation_matrix << std::endl;// coeffs()方法用于获取四元数对象的系数,返回一个四维向量。std::cout << "Quaternion: " << quaternion.coeffs()<< std::endl;// 欧拉角std::cout << "Euler Angles (ZYX): " << euler_angles.transpose() << std::endl;// 假设平移向量为(1,2,3)Vector3d translation_vector(1, 2, 3);// 构造欧式变换矩阵Matrix4d euclidean_transform_matrix = Matrix4d::Identity();  // 创建一个4x4的单位矩阵的静态方法// 将旋转矩阵赋值给欧几里德变换矩阵的左上角的3x3子矩阵,即旋转部分euclidean_transform_matrix.block<3,3>(0,0) = rotation_matrix;// 将平移向量赋值给欧几里德变换矩阵的右上角的3x1子矩阵,即平移部分euclidean_transform_matrix.block<3,1>(0,3) = translation_vector;/* 在Eigen库中,AngleAxisd()是用于创建一个旋转向量(Angle-Axis)的构造函数。Angle-Axis旋转表示通过一个旋转轴和一个旋转角度来描述旋转。具体来说,AngleAxisd()的使用方法如下Eigen::AngleAxisd angle_axis(angle, axis);在这段代码中,AngleAxisd(rotation_matrix)创建了一个AngleAxisd类型的对象,该对象代表了由旋转矩阵rotation_matrix表示的旋转。然后,.axis()方法用于获取该旋转向量的旋转轴,而.angle()方法用于获取旋转角度。接着,AngleAxisd(rotation_matrix).axis() * AngleAxisd(rotation_matrix).angle()部分将旋转向量的轴乘以旋转角度,这将得到一个旋转向量,其方向由旋转轴决定,大小由旋转角度决定。这个旋转向量被赋值给了extracted_rotation_vector。*/// 从欧式变换矩阵分解出旋转向量和平移向量Vector3d extracted_rotation_vector = AngleAxisd(rotation_matrix).axis() * AngleAxisd(rotation_matrix).angle();/* block<3,1>(0,3)是Eigen库中的一个函数,用于从矩阵中提取特定的块。在这里,block<3,1>(0,3)表示提取了从第0行开始,第3列开始的一个3x1的块,即欧氏变换矩阵的前三个元素(0, 1, 2行,3列),这通常是表示平移向量的部分。*/ Vector3d extracted_translation_vector = euclidean_transform_matrix.block<3,1>(0,3);// 输出欧式变换矩阵、提取的旋转向量和平移向量// 欧式变换矩阵std::cout << "\nEuclidean Transformation Matrix:\n" << euclidean_transform_matrix << std::endl;// 旋转向量std::cout << "Extracted Rotation Vector: " << extracted_rotation_vector.transpose() << std::endl;// 平移向量std::cout << "Extracted Translation Vector: " << extracted_translation_vector.transpose() << std::endl;return 0;
}

多看几遍代码,俺就算基本入第一道门了。。。

http://www.yayakq.cn/news/196294/

相关文章:

  • 知乎 闲鱼网站建设和网站运营建设网站企业排行
  • 女性门户网站模板网站开发 估算 excel
  • 企业网站制作比较好的网站不能正常显示出现后台代码
  • 游戏卡充值可以做网站吗网站排名怎么做 知乎
  • 青州网站开发赤峰市做网站
  • 域名怎么进入网站北京装修公司前20名
  • 给国外做网站h5邀请函模板免费
  • 上海网站模板网站建设 移动端 和 PC端
  • 平面毕业设计作品网站福州网站建设案例
  • 鄂州网站制作哪家好360网站怎么做链接
  • 汇鑫科技网站建设网站文件保护怎么做
  • 爱旅游网站制作东营网站优化
  • 个体工商户 网站备案网站后台做的超链接打不开
  • 奉贤做网站公司织梦cms是什么
  • 网站做gzip压缩自己做网站需要啥
  • 知名个人网站做零食网站的原因
  • 河长制网站建设增城定制型网站建设
  • 做有网被视频网站有哪些余姚有专业做网站的吗
  • 东莞市官网网站建设企业可信赖的手机网站建设
  • 物业管理网站开发背景杭州协会网站建设方案
  • 手机端网站开发教程购物网站开发教程 视频
  • 如何从客户网站开发客户wordpress 4.5.3中固定链接
  • 网站建设公司网站定制开发宝坻做网站
  • 怎样做网站平叿万网制作网站
  • 怎么发现网站漏洞而做软件网页浏览器加速器
  • 网站优惠券怎么做的韩城建设公司网站
  • 网站如何清除百度收录专业网站优化案例
  • 西安做网站云速网络深圳网站开发制作
  • 创维爱内购网站成都高端品牌网站建设
  • 手机浏览器输入网址广州seo网站服务公司