⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ogldemo.c

📁 CVI教程,用于信号采集系统的多任务开发软件.学习简单,功能实用.
💻 C
📖 第 1 页 / 共 4 页
字号:
    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_X_STEP,&uniformConfig.x.steps) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_X_MAX,&uniformConfig.x.max) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_Y_MIN,&uniformConfig.y.min) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_Y_STEP,&uniformConfig.y.steps) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_Y_MAX,&uniformConfig.y.max) );    Error :    return error;}//----------------------------------------------------------------------------// setControlAttributes//----------------------------------------------------------------------------static int setControlAttributes(void){    int error = 0;    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_LIGHTING_ENABLE,                        1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_LIGHT_SELECT,                        1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_LIGHT_ENABLE,                        1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_LIGHT_DISTANCE,                        3.0) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XNAME_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YNAME_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZNAME_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XNAME,"x axis") );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YNAME,"y axis") );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZNAME,"z axis") );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XLABEL_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YLABEL_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZLABEL_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_VIEW_DISTANCE,3.00) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XY_GRID_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YZ_GRID_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XZ_GRID_VISIBLE,1) );#if 0    /* formerly excluded lines */    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XLABEL_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YLABEL_VISIBLE,1) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZLABEL_VISIBLE,1) );#endif   /* formerly excluded lines */    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_PROJECTION_TYPE,OGLVAL_PERSPECTIVE) );    Error :    return error;}//----------------------------------------------------------------------------// createSPlot//----------------------------------------------------------------------------int createSPlot(OGLVertexD *plot,int x,int y){    int error = 0;    int numPlots;    errChk( OGLGetCtrlAttribute(demoPanel,demoControl,OGLATTR_NUM_PLOTHANDLES,&numPlots) );         if (numPlots)    {        errChk( OGLGetCtrlAttribute(demoPanel,demoControl,OGLATTR_FIRST_PLOTHANDLE,&numPlots) );            errChk( OGLDeletePlot(demoPanel,demoControl,numPlots,0) );    }        errChk( numPlots = OGLPlot3DScatter (demoPanel, demoControl, plot, x, y, OGLVAL_DOUBLE) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_SURFACE_STYLE,OGLVAL_SMOOTH) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_SURFACE_COLOR,OGLVAL_RED) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_SURFACE_SPECULAR_FACTOR,1.0) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_SURFACE_SHININESS,50) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_WIRE_STYLE,OGLVAL_NONE) );    errChk( OGLRefreshGraph(demoPanel, demoControl) );Error :    return error;}    //----------------------------------------------------------------------------// createUPlot//----------------------------------------------------------------------------int createUPlot(double *plot,double xStep,double yStep){    int error = 0;    int x = uniformConfig.x.steps + 1;    int y = uniformConfig.y.steps + 1;    int numPlots;    errChk( OGLGetCtrlAttribute(demoPanel,demoControl,OGLATTR_NUM_PLOTHANDLES,&numPlots) );         if (numPlots)    {        errChk( OGLGetCtrlAttribute(demoPanel,demoControl,OGLATTR_FIRST_PLOTHANDLE,&numPlots) );            errChk( OGLDeletePlot(demoPanel,demoControl,numPlots,0) );    }        errChk( numPlots = OGLPlot3DUniform (demoPanel, demoControl, plot, x, y,                                         OGLVAL_DOUBLE, xStep,                                         uniformConfig.x.min, yStep,                                         uniformConfig.y.min) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_SURFACE_STYLE,OGLVAL_SMOOTH) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_SURFACE_COLOR,OGLVAL_RED) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_SURFACE_SPECULAR_FACTOR,1.0) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_SURFACE_SHININESS,50) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_WIRE_STYLE,OGLVAL_SOLID) );    errChk( OGLSetPlotAttribute(demoPanel,demoControl,numPlots,OGLATTR_WIRE_COLOR,OGLVAL_RED) );    errChk( OGLRefreshGraph(demoPanel, demoControl) );    free(plot);Error :    return error;}    //----------------------------------------------------------------------------// sphere//----------------------------------------------------------------------------int sphere (void){    int error = 0;    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_RADIUS,&sphereConfig.radius) );    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_LONG_MIN,&sphereConfig.longitude.min) );    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_LONG_MAX,&sphereConfig.longitude.max) );    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_LONG_STEP,&sphereConfig.longitude.steps) );    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_LAT_MIN,&sphereConfig.latitude.min) );    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_LAT_MAX,&sphereConfig.latitude.max) );    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_LAT_STEP,&sphereConfig.latitude.steps) );        if  (sphereConfig.longitude.max < sphereConfig.longitude.min)    {        double temp = sphereConfig.longitude.max;        sphereConfig.longitude.max = sphereConfig.longitude.min;        sphereConfig.longitude.min = temp;    }        if  (sphereConfig.latitude.max < sphereConfig.latitude.min)    {        double temp = sphereConfig.latitude.max;        sphereConfig.latitude.max = sphereConfig.latitude.min;        sphereConfig.latitude.min = temp;    }            errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XMIN,-sphereConfig.radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XMAX,sphereConfig.radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YMIN,-sphereConfig.radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YMAX,sphereConfig.radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZMIN,-sphereConfig.radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZMAX,sphereConfig.radius) );    Error :     return error;}//----------------------------------------------------------------------------// cylinder//----------------------------------------------------------------------------int cylinder (void){    int error = 0;    errChk( GetCtrlVal(cylinderConfig.panel,CYLINDER_RADIUS,&cylinderConfig.radius) );    errChk( GetCtrlVal(cylinderConfig.panel,CYLINDER_LONG_MIN,&cylinderConfig.longitude.min) );    errChk( GetCtrlVal(cylinderConfig.panel,CYLINDER_LONG_STEP,&cylinderConfig.longitude.steps) );    errChk( GetCtrlVal(cylinderConfig.panel,CYLINDER_LONG_MAX,&cylinderConfig.longitude.max) );    errChk( GetCtrlVal(cylinderConfig.panel,CYLINDER_BOTTOMPOS,&cylinderConfig.height.min) );    errChk( GetCtrlVal(cylinderConfig.panel,CYLINDER_HEIGHT,&cylinderConfig.height.max) );    errChk( GetCtrlVal(cylinderConfig.panel,CYLINDER_HT_STEP,&cylinderConfig.height.steps) );        if  (cylinderConfig.longitude.max < cylinderConfig.longitude.min)    {        double temp = cylinderConfig.longitude.max;        cylinderConfig.longitude.max = cylinderConfig.longitude.min;        cylinderConfig.longitude.min = temp;    }        errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XMIN,-cylinderConfig.radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XMAX,cylinderConfig.radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YMIN,-cylinderConfig.radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YMAX,cylinderConfig.radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZMIN,cylinderConfig.height.min) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZMAX,cylinderConfig.height.min+cylinderConfig.height.max) );    Error :     return error;}//----------------------------------------------------------------------------// torus//----------------------------------------------------------------------------int torus (void){    int error = 0;    double radius;    errChk( GetCtrlVal(torusConfig.panel,TORUS_MAJORRADIUS,&torusConfig.majorrad) );    errChk( GetCtrlVal(torusConfig.panel,TORUS_MINORRADIUS,&torusConfig.minorrad) );    errChk( GetCtrlVal(torusConfig.panel,TORUS_LONG_MIN,&torusConfig.longitude.min) );    errChk( GetCtrlVal(torusConfig.panel,TORUS_LONG_MAX,&torusConfig.longitude.max) );    errChk( GetCtrlVal(torusConfig.panel,TORUS_LONG_STEP,&torusConfig.longitude.steps) );    errChk( GetCtrlVal(torusConfig.panel,TORUS_LAT_MIN,&torusConfig.latitude.min) );    errChk( GetCtrlVal(torusConfig.panel,TORUS_LAT_MAX,&torusConfig.latitude.max) );    errChk( GetCtrlVal(torusConfig.panel,TORUS_LAT_STEP,&torusConfig.latitude.steps) );    if  (torusConfig.longitude.max < torusConfig.longitude.min)    {        double temp = torusConfig.longitude.max;        torusConfig.longitude.max = torusConfig.longitude.min;        torusConfig.longitude.min = temp;    }        if  (torusConfig.latitude.max < torusConfig.latitude.min)    {        double temp = torusConfig.latitude.max;        torusConfig.latitude.max = torusConfig.latitude.min;        torusConfig.latitude.min = temp;    }        radius = torusConfig.majorrad + torusConfig.minorrad;    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XMIN,-radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XMAX,radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YMIN,-radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YMAX,radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZMIN,-radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZMAX,radius) );    Error :     return error;}//----------------------------------------------------------------------------// cone//----------------------------------------------------------------------------int cone (void){    int error = 0;    double radius;    errChk( GetCtrlVal(coneConfig.panel,CONE_BOTTOMRADIUS,&coneConfig.bottomrad) );    errChk( GetCtrlVal(coneConfig.panel,CONE_TOPRADIUS,&coneConfig.toprad) );    errChk( GetCtrlVal(coneConfig.panel,CONE_LONG_MIN,&coneConfig.longitude.min) );    errChk( GetCtrlVal(coneConfig.panel,CONE_LONG_STEP,&coneConfig.longitude.steps) );    errChk( GetCtrlVal(coneConfig.panel,CONE_LONG_MAX,&coneConfig.longitude.max) );    errChk( GetCtrlVal(coneConfig.panel,CONE_BOTTOMPOS,&coneConfig.height.min) );    errChk( GetCtrlVal(coneConfig.panel,CONE_HEIGHT,&coneConfig.height.max) );    errChk( GetCtrlVal(coneConfig.panel,CONE_HT_STEP,&coneConfig.height.steps) );        if  (coneConfig.longitude.max < coneConfig.longitude.min)    {        double temp = coneConfig.longitude.max;        coneConfig.longitude.max = coneConfig.longitude.min;        coneConfig.longitude.min = temp;    }        radius = (coneConfig.bottomrad > coneConfig.toprad) ? coneConfig.bottomrad : coneConfig.toprad;    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XMIN,-radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_XMAX,radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YMIN,-radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_YMAX,radius) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZMIN,coneConfig.height.min) );    errChk( OGLSetCtrlAttribute(demoPanel,demoControl,OGLATTR_ZMAX,coneConfig.height.min + coneConfig.height.max) );    Error :     return error;}//----------------------------------------------------------------------------// uniform//----------------------------------------------------------------------------int uniform(void){    int error = 0;    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_X_MIN,&uniformConfig.x.min) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_X_STEP,&uniformConfig.x.steps) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_X_MAX,&uniformConfig.x.max) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_Y_MIN,&uniformConfig.y.min) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_Y_STEP,&uniformConfig.y.steps) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_Y_MAX,&uniformConfig.y.max) );Error :    return error;}//----------------------------------------------------------------------------// Button Callbacks//----------------------------------------------------------------------------int CVICALLBACK properties (int panel, int control, int event,        void *callbackData, int eventData1, int eventData2){    switch (event) {        case EVENT_COMMIT:            OGLPropertiesPopup(demoPanel,demoControl);            break;    }    return 0;}int CVICALLBACK shutdown (int panel, int control, int event,        void *callbackData, int eventData1, int eventData2){    switch (event) {        case EVENT_COMMIT:            QuitUserInterface (0);            break;    }    return 0;}int CVICALLBACK UniformPlot (int panel, int control, int event,        void *callbackData, int eventData1, int eventData2){    switch (event) {        case EVENT_COMMIT:            break;    }    return 0;}int CVICALLBACK sphereConfigure (int panel, int control, int event,        void *callbackData, int eventData1, int eventData2){    switch (event) {        case EVENT_COMMIT:            RemovePopup (0);            if (control == SPHERE_OK)                return sphere();                                break;    }    return 0;}int CVICALLBACK cylinderConfigure  (int panel, int control, int event,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -