📄 ogldemo.c
字号:
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 + -