|
楼主 |
发表于 2012-5-21 14:50:05
|
显示全部楼层
array 发表于 2012-5-21 13:30
请告诉我为什么不对,您如何得到这个结论
非常感谢array大神!
我画了一条线段,两个端点分别是(1 , 0 , 1)和(-10 , 0 -10) , 生成结点geode
我使用了matrixTransForm 将geode平移(1 , 0 , 0)- transform->postMult( osg::Matrix::translate(1 , 0 , 0 ));
- transform->addChild(geode);
复制代码 然后获得变换矩阵 matrixList , 并遍历结点,用矩阵乘结点- osg::MatrixList matrixList= geode->getWorldMatrices();
- osg::ref_ptr<osg::Vec3Array> vec3Array = (osg::Vec3Array*)geode->getDrawable(0)->asGeometry()->getVertexArray();
- for( int i=0 ; i<vec3Array->size() ; i++ )
- {
- osg::Vec3 vec = (*vec3Array)[i];
- osg::Vec3 vec2 = matrixList[0]*vec;
- printf( "before translation : %f , %f , %f\n" , vec[0] , vec[1], vec[2] );
- printf( "after translation : %f , %f , %f\n" , vec2[0] , vec2[1], vec2[2] );
- }
复制代码 获得结果确实是 (1 ,0 , 1)变成了(0.5 , 0.5 , 0.5) , (-10 , 0 , -10)变成(1.1111 , 0 , 1.1111)
请问array是我在矩阵使用上出了什么问题,为什么会出这个结果呢? |
|