理论教育 如何获取DOF坐标?

如何获取DOF坐标?

时间:2023-11-24 理论教育 版权反馈
【摘要】:DOF 主要用来控制围绕某一点进行旋转,当然也可以进行平移操作。在很多时候,都希望得到某个DOF 点的坐标。编写了一个静态函数获取DOF的绝对坐标:其中,pDOF 为目标DOF 指针,另外分别设置了3个double 类型的指针变量,用来返回获取的坐标值。其详细代码如图6.20.2所示。图6.20.2获取DOF的相对坐标

如何获取DOF坐标?

DOF 主要用来控制围绕某一点进行旋转,当然也可以进行平移操作。在很多时候,都希望得到某个DOF 点的坐标。首先要认识到,对于坐标来说,包含本地坐标和世界坐标。本地坐标,就是DOF 相对于物体本身而言;绝对坐标,是DOF 相对于场景而言。

对于DOF的操作,首先要找到DOF所在的物体,在上一节已经使用了这样的代码,找到名称为“m1_tank”的物体“tank”:

vpObject * tank=vpObject::find("m1_tank");

找到“tank”上名称为“barrelDOF”的DOF,同时加以引用:

m_barrel=static_cast<vsDOF *>(tank->find_named("barrelDOF"));

m_barrel->ref();

创建一个转换m_mainGunTransform:

vsTransform * m_mainGunTransform=new vsTransform();

m_mainGunTransform->setTranslate(0.14,3.22,0.0);

使转换m_mainGunTransform 成为m_barrel的“孩子”:

m_barrel->push_back_child(m_mainGunTransform);

找到名称为“maingunflash”的特效,同时加以引用:

m_mainGunFlash=vpFxParticleSystem::find("maingunflash");

m_mainGunFlash->ref();

使特效m_mainGunFlash 成为转换m_mainGunTransform的孩子:(www.daowen.com)

m_mainGunTransform->push_back_child(m_mainGunFlash);

这样,实际上就完成了利用转换把火焰特效放到炮管尾部的功能。

编写了一个静态函数获取DOF的绝对坐标:

其中,pDOF 为目标DOF 指针,另外分别设置了3个double 类型的指针变量,用来返回获取的坐标值。其详细代码如图6.20.1所示。

图6.20.1 获取DOF的绝对坐标

编写了一个静态函数,获取DOF的相对坐标:

void PublicMember::CTS_GetRelativePositionFromDOF(vsDOF * pDOF,

double *x,double *y,double *z,double *h,double *p,double *r);

其中,pDOF 为目标DOF 指针,另外分别设置了6个double 类型的指针变量,用来返回获取的坐标值。其详细代码如图6.20.2所示。

图6.20.2 获取DOF的相对坐标

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈