PCL setCameraPosition 参数讲解

       

setCameraPosition 的原型如下void setCameraPosition (double pos_x, double pos_y, double pos_z,double view_x, double view_y, double view_z,double up_x, double up_y, double up_z, int viewport = 0);pos_x pos_y pos_z为相机所在的位置view_x view_y  view_z 是焦点所在的位置up_x  up_y  up_z 的那个坐标轴朝上,若朝上则为1,若朝下为-1

cloudcompare 中正视的的坐标显示如下图,Z轴朝上(up_x=0 up_y=0 up_z=1)而Y轴背离 所以相机位置 pos_y为负值.

如果坐标系看起来不直观,建议拿个盒子画好正视的坐标系 .

以下是切换自动计算相机位置、焦点位置、相机朝向的计算函数

#define    PCL_FACEVIEW      1  //正视
#define    PCL_DOWNVIEW      2  //仰视
#define    PCL_LEFTVIEW      3  //左视
#define    PCL_RIGHTVIEW     4  //右视
#define    PCL_TOPVIEW       5  //俯视
#define    PCL_BACKVIEW      6  //后视void getCameraParam(int viewPos,PointT minIn,PointT maxIn,PointT &cameraPosOut,PointT &focusPosOut,PointT &upPosOut){switch (viewPos) {case PCL_FACEVIEW     : //OK{focusPosOut.x=0;focusPosOut.y=0;focusPosOut.z=0;cameraPosOut.x=0;cameraPosOut.y=-300;cameraPosOut.z=0;upPosOut.x=0;upPosOut.y=0;upPosOut.z=1;}break;case PCL_DOWNVIEW     :   //OK{focusPosOut.x=0;focusPosOut.y=0;focusPosOut.z=0;cameraPosOut.x=0;cameraPosOut.y=0;cameraPosOut.z=-300;upPosOut.x=0;upPosOut.y=1;upPosOut.z=0;}break;case PCL_LEFTVIEW     :  //OK{focusPosOut.x=0;focusPosOut.y=0;focusPosOut.z=0;cameraPosOut.x=-300.0;cameraPosOut.y=0;cameraPosOut.z=0;upPosOut.x=0;upPosOut.y=0;upPosOut.z=1;}break;case PCL_RIGHTVIEW    :  //OK{focusPosOut.x=0;focusPosOut.y=0;focusPosOut.z=0;cameraPosOut.x=300;cameraPosOut.y=0;cameraPosOut.z=0;upPosOut.x=0;upPosOut.y=0;upPosOut.z=1;}break;case     PCL_TOPVIEW: //OK{focusPosOut.x=0;focusPosOut.y=0;focusPosOut.z=0;cameraPosOut.x=0;cameraPosOut.y=0;cameraPosOut.z=300;upPosOut.x=0;upPosOut.y=1;upPosOut.z=0;}break;case     PCL_BACKVIEW:    //OK{focusPosOut.x=0;focusPosOut.y=0;focusPosOut.z=0;cameraPosOut.x=0;cameraPosOut.y=300.0;cameraPosOut.z=0;upPosOut.x=0;upPosOut.y=0;upPosOut.z=1.0;}break;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/174178.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D RPG Course | Core 学习日记二:PolyBrush / Pro Builder构建场景

前言 我们这次将要学习的是使用PolyBrush和Pro Buillder构建精美的游戏场景。 PolyBrush 在Package Manager中导入的时候要注意,将Shader Examples(URP)也一起导入,不然PolyBrush对URP渲染的素材进行操作时会出现问题。 导入完成之后在Tools里将…

什么是Immutable.js?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

医学手术麻醉临床信息系统源码

手术麻醉临床信息系统遵循“以病人为中心、服务于临床”的宗旨,使医护人员从繁琐的病历书写中解放出来,集中精力关注病人的诊疗,将更多的时间用于分析、诊断。以服务围术期临床业务工作的开展为核心,为医护人员、业务管理人员、院…

吴恩达《机器学习》2-5->2-7:梯度下降算法与理解

一、梯度下降算法 梯度下降算法的目标是通过反复迭代来更新模型参数,以便最小化代价函数。代价函数通常用于衡量模型的性能,我们希望找到使代价函数最小的参数值。这个过程通常分为以下几个步骤: 初始化参数: 随机或设定初始参数…

不定长顺序表3

六.判空函数 刚刚忘记参数判断了 七.查找函数——在顺序表PS中 查找第一个key值,找到返回key值的下标,没有找到返回-1 不管能否扩容,查找都是在有效数据内部查找,所以可以把定长顺序表的查找Search函数搬过来 测试也跟定长的一样…

MyBatis-Plus 实战教程三 拓展插件

文章目录 扩展功能代码生成安装插件使用 静态工具逻辑删除通用枚举定义枚举配置枚举处理器测试 JSON类型处理器定义实体使用类型处理器 仓库地址 扩展功能 代码生成 在使用MybatisPlus以后,基础的Mapper、Service、PO代码相对固定,重复编写也比较麻烦。…

openpnp - src - 配置文件载入过程的初步分析

文章目录 openpnp - src - 配置文件载入过程的初步分析概述笔记自己编译用的git版本报错截图问题1 - 怎么在调试状态下, 定位到抛异常的第一现场?结合单步调试找到的现场, 来分析报错的原因openpnp配置文件读取的流程END openpnp - src - 配置文件载入过程的初步分析 概述 从…

工厂模式(Factory)

简单工厂模式 简单工厂模式又叫静态工厂模式,顾名思义,它是用来实例化目标类的静态类。下面我主要通过一个简单的实例说明简单工厂及其优点。 工厂方法模式 工厂方法模式和简单工厂模式在结构上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类…

npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

1 bug描述 使用vscode执行npm run dev指令时出现 “npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次 “ 的错误提示,原因是系统里没有安装n…

【机器学习】loss损失讨论

大纲 验证集loss上升,准确率也上升(即将overfitting?)训练集loss一定为要为0吗 Q1. 验证集loss上升,准确率也上升 随着置信度的增加,一小部分点的预测结果是错误的(log lik 给出了指数级的惩…

微信小程序设计之页面文件pages

一、新建一个项目 首先,下载微信小程序开发工具,具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后,注册小程序账号,具体注册方法,可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

C++笔记-RTTR编译安装简单使用

这里以Linux为例,我使用的机器的gcc版本是4.9.2 使用的RTTR的版本是0.9.5 编译&安装 首先在官网将rttr的0.9.5版本下载下来。 Home |RTTR 按照官方的安装流程: 但这里可能会出现一个问题: 按照解答,切换成root用户&#x…

【设计模式】第13节:结构型模式之“享元模式”

一、简介 所谓“享元”,顾名思义就是被共享的单元。享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象。 实现:通过工厂模式,在工厂类中,通过一个Map或者List来缓存已经创建好的享元对象&am…

文件夹比较工具怎么用 对比两个文件夹找出多余的文件

在日常工作中,经常会接触到大量的文件,长时间堆积,文件夹会越来越多,从而导致文件重复,如果想要找出想要的文件会比较麻烦,那么你知道应该怎么来查找吗?下面就让我们来学习一下文件夹比较工具怎…

香港服务器运行不正常原因简析

​  网站在线业务的部署需要服务器的存在。于我们而言,租用正规服务商(正规机房)的服务器,一般情况下是会很少出现问题。但,要知道,再稳定的服务器也有出现问题的时候,香港服务器也不例外,而且恰恰这个原…

分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制)

分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制) 目录 分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制)分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matla…

C语言基础简述(一)

目录 1. 标准输入输出库 2. 定义变量 3. 关于基本数据类型 3.1 计算机如何存储数据 3.2 基本数据类型 3.2.1 数值类型 3.2.1.1 整数类型 3.2.1.2 浮点数类型 3.2.2 字符类型 3.2.2.1 ASCII表 4. 进制数之间的转换 4.1 十进制整数和二进制之间的相互转换 5. C语言运…

椭圆曲线在SM2加解密中的应用(三)

一、SM2加密运算 1.1加密原始数据 SM2加密运算首先是用户A对数据加密,用户A拥有原始数据 椭圆曲线系统参数长度为klen比特的消息M公钥Pb 椭圆曲线系统参数,已经在 椭圆曲线参数(二)中详细介绍;M就是需要加密消息&am…

Ajax学习笔记第三天

做决定之前仔细考虑,一旦作了决定就要勇往直前、坚持到底! 【1 ikunGG邮箱注册】 整个流程展示: 1.文件目录 2.页面效果展示及代码 mysql数据库中的初始表 2.1 主页 09.html:里面代码部分解释 display: inline-block; 让块元素h1变成行内…

前端移动web高级详细解析三

模拟移动设备,方便查看页面效果 屏幕分辨率 分类: 物理分辨率:硬件分辨率(出厂设置) 逻辑分辨率:软件 / 驱动设置 结论:制作网页参考 逻辑分辨率 视口 作用:显示 HTML 网页的区…