我要发帖 回复

正式会员

9

主题

34

积分

0

专家分

:

私信
发表时间 : 2007-12-12 16:35:56 | 浏览 : 1157    评论 : 2
#include <vgutil.h>

#include <vg.h>





void   

setObjectScale( vgObject *obj, float* xyzScale  ){

// -------------------------------------------------------

//

//  Public Function                             

//

//   Set the Scale of the vgObject using the XYZ scale

//   values passed in thru xyzScale[3]            

//

// -------------------------------------------------------

vgMat scaleMat;

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



   

    //

    // Sanity check we need an object and scale

    //

    if( obj == NULL || xyzScale == NULL){

        return;

        }



    //

    // We need a Matrix stack so create one

    //

    vgMatStack *scaleStack = vgNewMatStack();





    //

    // We need to grab the Real coordinate position

    // of the object

    //

    vgPosition *objPos = vgNewPos();

    vgGetWCSPos ( obj, objPos );

    vgGetPosVecD( objPos, &x, &y, &z,  &h, &p, &r);



    //

    // Set up the Matrix stack for the operation

    // required to set a scale matric on the object

    //

    vgPushMatStack( scaleStack);



    vgTransMat( scaleStack, x, y, z);

   

    vgRotMat(   scaleStack, h, 'z' );

   

    vgRotMat(   scaleStack, p, 'x' );

   

    vgRotMat(   scaleStack, r, 'y' );

   

    vgScaleMat( scaleStack,  sxyz[0],  sxyz[1],  sxyz[2]);

   

    //

    // Grab the accumlate matrix from the stack

    //

    vgGetMat(   scaleStack, scaleMat );

   

    //

    // Clear the stack

    //

    vgPopMatStack( scaleStack );



    //  

    // Apply the Matrix to the vgPos and then to the vgObject

    //

    vgPosMat( objPos, scaleMat );        

    vgPos( obj, objPos );



    //

    // Now Free the dynamically create variables

    //

    vgDelMatStack( scaleStack );

    vgDelPos( objPos );



} // setObjectScale

###############################################################################
以上是vega百例中对物体进行缩放的源代码,请问以下几句是什么意思啊:
vgPushMatStack( scaleStack);
vgTransMat( scaleStack, x, y, z);
vgRotMat(   scaleStack, h, 'z' );  
vgRotMat(   scaleStack, p, 'x' );  
vgRotMat(   scaleStack, r, 'y' );  
vgScaleMat( scaleStack,  sxyz[0],  sxyz[1],  sxyz[2]);

最近VR访客

zsagile 评论于2007-12-12 18:04:58
如果只对物体缩放 不进行旋转 改用什么代码? 高手指点指点啊
zsagile 评论于2007-12-13 09:43:42
解决了

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-9-18 05:59 AM

返回顶部