|
/*在gis鼠标点击一个地球上某处,得到维度mLat和经度mLon,
设定高度为50,利用系统函数createPlacerMatrix()将经度纬度高度转换成矩阵posMat*/
mObjectPlacer->createPlacerMatrix(mLat, mLon, 50, posMat);
/*设定变换矩阵*/
osg::ref_ptr<osg::MatrixTransform> matrix = new osg::MatrixTransform(posMat);
/*利用变换矩阵添加一个喷泉节点,并加入到场景当中,此时没有设定重力加速度和phi及theta角度,所以在场景中喷泉的方向是垂直于当地水平面向上,及沿着当地水平坐标系北东天坐标系的z轴向上。达到预定效果*/
matrix->addChild(od1.ReCreateConduitScene());
root->addChild(matrix);
/*但是粒子系统需要添加重力加速度,所以重力加速度应该是沿着当地北东天坐标系的-z轴即(-x,-y,-z)方向,但是如果通过setToGravity()添加的重力加速度是沿世界坐标系的-z轴,所以我使用setAcceleration()进行添加重力加速度,三个参数分别是9.8乘以[(-x,-y,-z)的单位向量],代码如下:*/
/*得到粒子系统被添加的位置在世界坐标系当中的位置向量*/
double Position[3] = {0.0};
double x = posMat.getTrans().x();
double y = posMat.getTrans().y();
double z = posMat.getTrans().z();
Position[0] = -x;
Position[1] = -y;
Position[2] = -z;
/*将位置单位化*/
Unit(Position);
double pGravityValue[3] = {0.0};
进行三轴重力加速度赋值
{
pGravityValue[0] = 9.8*Position[0];
pGravityValue[1] = 9.8*Position[1];
pGravityValue[2] = 9.8*Position[2];
}
setAcceleration(osg::Vec3d(p_pGravityValue[0],p_pGravityValue[1],p_pGravityValue[2]));
按理这个加速度应该是沿着北东天坐标系的-z轴,但是并不是,求高手解释~
非常感谢!! |
|