




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Vortex建模实例分析 ExHinge实例分析 这个实例的目的是:建立两个物体,他们之间只有一个相对旋转的自由度。想要达到的效果如下图所示。绿色物体可以绕着黑色轴旋转。红色物体固定。 显然,这里的“Hinge”并不是我们通常所说的“铰链”,而是对两个物体相对只有一个转动自由度的统称。上图中,通过控制上下、左右键可以控制绿色运动物体的运动方向、加减速等。 下面分析一下VORTEX中是如何编程实现这一建模仿真过程的。 一、Vortex是基于C++的,所以头文件包括哪些内容是首先要考虑的内容,例子中要用的基本几何体、part、hinge、运动控制等,因此必须要包含头文件: “#include"Vx/VxFrame.h"//系统必须存在frame #include"Vx/VxBox.h"//基本几何体 #include"Vx/VxCollisionGeometry.h"//碰撞检测用 #include"Vx/VxPart.h"//创建零部件时需要 #include"Vx/VxHinge.h"//创建铰链时需要 #include"Vx/VxUniverse.h"//系统必须至少存在一个Universe #include"Vx/VxConstraintController.h"//控制运动时需要 #include"Vx/VxVisualizer.h"”//用于观察 #include<stdio.h>//C++标准库文件 除了这些必须包含的文件之外,例程中还包含头文件“#include"Vx/VxPrecision.h"”,不知道其具体作用,将其注释掉后运行程序,没有变化。 二、从程序整体上看分为三部分,依次分别为:定义ExHinge类、运动控制、主程序。下面分别进行分析。 1.ExHinge类中包含了对其成员函数及数据成员的声明。其成员函数包括构造函数(ExHinge(VxUniverse*in_Universe);)、析构函数(~ExHinge())、创建零件函数(voidcreateParts(VxVisualizer*in_visualizer);)、创建约束函数(voidcreateConstraints(););其数据成员分别为VxUniverse、VxPart(2个)、VxHinge。在该类的外部分别对这些成员函数进行了定义。在类的内部对成员函数做声明,而在类体外定义成员函数,这是程序设计的一个良好习惯。创建零部件的成员函数如下图所示: 上图中右侧四个大括号是创建零件的四个必要步骤。第一个大括号是创建了一个固定不动的物体,大小为4x1x1,默认为其几何中心在坐标原点。如果要想改变其位置的话可以用setposition()函数改变。创建过程中需要先用addGeometry()函数创建物理模型,然后将零件添加到Universe中去。这里要补充一点的是,Vortex中的物体有物理模型和场景模型两种,前者是用于物理学计算的,后者是显示用的。两者可以重合,也可以不重合。场景模型可以在Vortex中创建,也可以由Creator、3dmax等创建好后加载。 第二个大括号是创建静止物体的场景模型。由于场景模型是用于观察的,而且是直接在Vortex中创建的,因此先必须设定颜色。然后创建了场景模型并将其结点与物理模型连接了起来。这部分的最后一条语句是设置了该物体的驱动方式,是动力学驱动还是结点驱动,这里选择的是结点驱动。注意:由于该物理没有设定质量,因此必须指定驱动方式。如果设定了质量,则无需指定驱动方式,强制为动力学驱动。 第三、四个大括号创建了运动物体的物理模型、场景模型,过程与固定物体的创建基本相同。这里说一下不同的地方。运动物体不可能再摆放到坐标系原点位置,因此要用setposition()重置。运动物体已经设定了质量,因此驱动方式不需要指定。 再看创建约束的成员函数。首先用语句“VxVector3axis(1,0,0);VxReal3pos;mMovingPart->getPosition(pos);”指定了铰链的位置和旋转的方向。下面的语句用处很大: 用于改变物体方位的,第一句、第四句分别为定义和调用变换矩阵,二、三句分别为旋转和平移。本例中不再需要进行变换,因此旋转参数为0,平移位置设置和初始值相同。如果将这段程序注释掉后运行,发现不影响结果,就是这个原因。 然后用语句mHinge=newVxHinge(mFixedPart,mMovingPart,pos,axis.v)创建了铰链约束。并指定了铰链的两个物体碰撞交互失效。这个是必需的。最后将铰链约束添加到Universe中。 2.对铰链约束的运动控制。这部分比较难理解,只是大概了解了它的主要作用。但是这部分相当重要,经过仔细探索,也有了一些理解和感悟: 控

ys****39
实名认证
内容提供者


最近下载