zoukankan      html  css  js  c++  java
  • vega编程中文资料

    1、通用API函数:
       Vega通用API函数能操作大多数的Vega类和对象(注意不是全部)。
    1.1   Vega结构类:
         Vega的结构类列表列出了Vega中可用类实例的类型,你能看到它们中的大多数都是Lynx面版中的对象。
    当用户建立了一个Vega类实例的时候,也就提供了一个指向类结构的指针,MPI提供了函数去操纵这些结构元素,
    因此用户不必了解它的数据结构,虽然这个数据结果对用户是透明的。当MPI改变了这个数据结构时,用户原有的
    程序代码没有必要跟着改变,所有的数据类型都在vg.h中定义。
          VGTYPE_CHAN         VGTYPE_MOTION
          VGTYPE_WINDOW       VGTYPE_GFX
          VGTYPE_OBSERV       VGTYPE_ENV
          VGTYPE_SCENE    VGTYPE_ ISECTOR
          VGTYPE_ SYSTEM   VGTYPE_VOL
          VGTYPE_ OBJECT      VGTYPE_LIGHT
          VGTYPE_DBM       VGTYPE_FOG
          VGTYPE_PLAYER    VGTYPE_ENVFX
          VGTYPE_IODEV   VGTYPE_POS  VGTYPE_TFLOD
    1.2   隐藏的Vega结构类:
         以下的结构类列表列出的是不能通过Lynx进行操作的类类型,通过这些隐藏类的指针和API函数用户可以建立更
    强大、更易控制、更灵活的应用程序,但这些功能是不能仅仅通过图形用户界面的设置来获得的。
         VGTYPE_PART     VGTYPE_DATASET
         VGTYPE_CLASSDEF    VGTYPE_CTAB
         VGTYPE_DLIST      VGTYPE_EVENT
         VGTYPE_IOMAP      VGTYPE_MCODE
         VGTYPE_LIST

    2  Vega的术语、函数构词法、
          Vega函数名字是混合实例的,如vgChanWin。MPI效仿performer格式命名函数和对象属性。函数以动-名词格式命名,
    以下大家都知道,我不列了。
          构词法就列几个例子大家看看吧:
          vgSrcAssoc(source,association)
          vgAddSrcAssoc(source,association)
          vgRemSrcAssoc(source,association)
          vgGetSrcAssoc(source,association)

    3、Vega通用函数(1)
        vgGetType       返回Vega类的类型;
        vgName          命名一个Vega类的对象;
        vgGetName       拷贝引用类对象的字符串名到用户字符数组;
        vgGetNameLen    获得列出对象名的长度;
        vgDelete        删除指定的类对象;
        vgUpdate        更新类对象,许多Vega类对象都需要周期性的更新以保持其值的有效性,大多数对象通过vgSync
                        和vgFrame每帧更新,但系统之外创建的对象则需要周期性的更新;
        vgProp          设置Vega类对象的属性;
        vgGetProp       获得当前Vega类对象的属性;
        vgCopy          拷贝源对象到目标对象,排斥对象名、对象关联和设置的回调;
    举例:
        //返回Vega类的类型
          Type=vgGetType(Class);
          if  (Type=VGTYPE_OBJECT)
                 print  ("found an object" ;
          else
                 print   ("found something else" ;

        //创建和命名一个对象
          myObject=vgNewObject();
          vgName(myObject,"egghead" ;

        //删除指定的类对象
          myPlayer=vgFindPlyr("Drive Car" ;
          vgDelete(myPlayer);

        //vgProp等
           vgMotion  *myMotionModel;
           float     mmType;
           myMotionModel=vgFindMot("mm" ;      //ADF定义了mm
           mmType=vgGetProp(myMM,VGMOT_MODEL);
           switch(mmType)
           {
                 case  VGMOT_DRIVE:
                     vgProp(myMM,VGMOT_MODEL,VGMOT_DRIVE);
                 break;
                 case  VGMOT_SPIN:
                     vgProp(myMM,VGMOT_MODEL,VGMOT_SPIN);
                 break;
                 case  VGMOT_WARP:
                     vgProp(myMM,VGMOT_MODEL,VGMOT_WARP);
                 break;
                 case  VGMOT_UF
                     vgProp(myMM,VGMOT_MODEL,VGMOT_UFO);
                 break;
                 case  VGMOT_USER1:
                     vgProp(myMM,VGMOT_MODEL,VGMOT_USER1);
                 break;
            }
    4、Vega通用函数(2)
        vgPrint                以标准格式打印Vega实例信息(可以自定义),主要用于调试;
        vgUserData             赋予一个指针到一些实例的用户自定义数据;
        vgGetUserData          获得用户数据的指针;
        vgWriteADF             以ADF格式打印一个实例的信息;
        vgAddFunc              对Vega实例增加一个回调;
        vgDelFunc              对Vega实例移去一个回调;
    这里就不举例了。

    5、Vega通用函数回调
        VGCOMMON_POS           放置回调时调用;
        VGCOMMON_DELETE        删出回调前调用;
        VGCOMMON_COPY          复制回调前调用;
        VGCOMMON_STATE         回调状态改变时调用;
        VGCOMMON_PRINT         类打印时调用;
        VGCOMMON_NEW           类实例化前调用;
        VGCOMMON_POSTUPDATE    回调更新后调用;
    举个例子:
        void PositionCallback(vgCommon*,void*);    //函数原形
        vgMotion   *myMM;                          //声明变量
        myMM=vgGetMot(0);                          //获得运动模型的指针
        vgAddFunc(myMM,VGCOMMON_POS,PositionCallBack,0)
                                         //在运动模式上对每个位置事件设置一个回调函数
        void  PositionCallBack(vgCommon *myMM,void *udata);
          {
            vgPosition   *currentPosition;
            currentPosition=vgGetPos(myMM);
            vgPrint(currentPosition);
          }                              //回调函数结束

    6、Vega位置函数
       Vega位置函数(vgPos)用于操纵位置和方向,可以是单精度数值、双精度数值、单精度矩阵、双精度矩阵。
        vgNewPos
        vgPosVec         定义位置和方向;
        vgGetPosVec      获得矢量信息;
        vgDelPos         删除一个位置值;
        vgCopyPos        复制一个位置值;
        vgGetPosDtype    获得一个储存于vgPostion句柄中的数据的数据类型;
        vgPosVecD/vgGetPosVecD      设置/获取double型数值位置;
        vgPosMat/vgGetPosMat        以4*4矩阵格式定义/释放位置和方向信息;
        vgPosMatD/vgGetPosMatD      以双精度数值4*4矩阵格式定义/释放位置和方向信息;
        vgPosTime        时间—位置函数,当位置需要进行以内插值替换等操作时可以使用;
        vgGetPosTime     获取双精度时间—位置信息;
        vgSubPos         计算2个不同位置对象的不同点,结果以单精度储存,只对X,Y,Z进行操作;
        vgSubPosD        计算2个不同位置对象的不同点,结果以双精度储存,只对X,Y,Z进行操作;
        vgPos            在世界坐标系中以CPos类定位一个对象;
        vgGetPos         获取一个对象的位置并将其拷贝到vgPosition结构中;
        vgGetWCSPos      返回世界坐标系的位置值;

    举个例子:
        vgObject  *object;
        vgPostion  *myPos;
        float X,Y,Z,H,P,R;

        object=vgFindObj("egg");
        myPos=vgNewPos();
        vgGetPos(object,myPos);
        vgGetPosVec(myPos,&X,&Y,&Z,&H,&P,&R);
        X+=100;
        R+=10;
        vgPosVec(myPos,X,Y,Z,H,P,R);
        vgPos(object,myPos);

  • 相关阅读:
    CC3200作为STA模式连接路由器sl_WlanConnect出现exception occured at:0xa72fcf6
    HI2115软件开发板V150版本AT+NSOST指令
    利尔达NB-IOT模块对接移动onenet平台步骤
    ip4addr_ntoa和不可重入函数
    VHDL入门学习-程序组成
    nexys4-DDR开发板温度传感器ADT7420U
    2016-2017股票亏损反省
    一起来学linux:例行性任务之at和crontab
    linux c编程:进程间通信
    一起来学linux:sudo
  • 原文地址:https://www.cnblogs.com/yunbo/p/240786.html
Copyright © 2011-2022 走看看