首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个Ogre向量之间旋转Ogre手动对象

在两个Ogre向量之间旋转Ogre手动对象
EN

Stack Overflow用户
提问于 2020-03-24 20:00:06
回答 1查看 119关注 0票数 0

Image我正在做一个rviz插件项目,在这个项目中我需要在两个坐标之间移动一个ogre立方体网格结构。

下面是我为此所做的代码

代码语言:javascript
复制
Ogre::Vector3 src (1,2,3);
Ogre::Vector3 destination(4,5,6);
//manual object
static int count=0;
const std::string& filename="cube.mesh";
Ogre::MeshPtr cube= rviz::loadMeshFromResource(filename);    
std::stringstream str;
str << "cube" << count++;
Ogre::Entity *entity = scene_manager_->createEntity(str.str(),cube);
Ogre::SceneNode* parent_node = scene_manager_->getRootSceneNode();
parent_node ->attachObject(entity);
parent_node ->setPosition((src+destination)/2);   //by doing this the cube passes through mid point
Ogre::Radian angle = src.angleBetween(destination);

//here is some error, 
Ogre::Quaternion angle_x((angle), Ogre::Vector3::UNIT_X);
Ogre::Quaternion angle_y((angle), Ogre::Vector3::UNIT_Y);
Ogre::Quaternion angle_z((angle), Ogre::Vector3::UNIT_Z);
parent_node ->rotate(angle_x*angle_y*angle_z);

然而,它不会在两个向量之间对齐。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2020-03-25 21:00:03

为了得到从src点到目标1的方向,你必须减去这些位置,得到向量。

据我所知(对Ogre一无所知),src.angleBetween(destination);给出了从原点到目标的方向和从原点到源的方向之间的角度差。请注意,“源到源”和“源到目标”方向之间是而不是角度。

此外,Ogre::Radian angle是标量值,以弧度为单位的角度,您不能从该值获得旋转矩阵(需要矩阵来对齐向量)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60830654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档