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

📄 ogldemo.c

📁 CVI教程,用于信号采集系统的多任务开发软件.学习简单,功能实用.
💻 C
📖 第 1 页 / 共 4 页
字号:
//----------------------------------------------------------------------------// Complex Demo of 3D Plotting CVIOGL instrument driver//----------------------------------------------------------------------------#include <windows.h>//----------------------------------------------------------------------------// Includes//----------------------------------------------------------------------------#include <GL\gl.h>#include <GL\glu.h>#include <cvirte.h>     /* Initialize CVI libraries */#include <utility.h>#include <userint.h>#include "toolbox.h"#include "cviogl.h"#include "ogldemo.h"//----------------------------------------------------------------------------// Defines//----------------------------------------------------------------------------#define SINHXCOSY       1#define SINCX2Y2        2#define SINX2Y2         3#define EXPXY           4#define LISTSPHERE          1#define LISTCYLINDER        2#define LISTTORUS           3#define LISTCONE            4#define AUTO_XY_LONGITUDE   -90.0#define AUTO_XY_LATITUDE    0.0#define AUTO_YZ_LONGITUDE   0.0#define AUTO_YZ_LATITUDE    90.0#define AUTO_XZ_LONGITUDE   -90.0#define AUTO_XZ_LATITUDE    90.0#define DEFAULT_ANGLE       40.0#define RedComponent(color)     (((color) >> 16) & 0xff)#define GreenComponent(color)   (((color) >> 8) & 0xff)#define BlueComponent(color)    (((color)) & 0xff)#define RAD(x)          ((x)*PI/180.0)#define SINC(x)         ((x) != 0.0  ? sin(PI*(x))/(PI*(x)): 1.0)//----------------------------------------------------------------------------// Typedefs//----------------------------------------------------------------------------typedef struct _minMaxStep{    double min;    double max;    int steps;} minMaxStep;struct {    int panel;    double radius;    minMaxStep longitude;    minMaxStep latitude;} sphereConfig;struct {    int panel;    double radius;    minMaxStep longitude;    minMaxStep height;} cylinderConfig;struct {    int panel;    double majorrad,minorrad;    minMaxStep longitude;    minMaxStep latitude;} torusConfig;struct {    int panel;    double bottomrad,toprad;    minMaxStep longitude;    minMaxStep height;} coneConfig;struct{    int panel;    minMaxStep x;    minMaxStep y;} uniformConfig;//----------------------------------------------------------------------------// Variables//----------------------------------------------------------------------------static int demoPanel;static int demoControl;static int molecule = 0;static double latitude,longitude,distance;static OGLVertexD center;static double mollatitude,mollongitude,moldistance;static OGLVertexD molcenter;static char *benzene[] = {"C 0.0998334 0.995004 0","H 0.159733 1.59201 0","C 0.911616 0.411044 0","H 1.45859 0.65767 0","C 0.811782 -0.58396 0","H 1.29885 -0.934337 0","C -0.0998334 -0.995004 0","H -0.159733 -1.59201 0","C -0.911616 -0.411044 0","H -1.45858 -0.65767 0","C -0.811782 0.583961 0","H -1.29885 0.934337 0",NULL};static char *buckmisterfullerine[] = {"C  1.22650000 0.00000000 3.31450000","C  0.37900000 1.16640000 3.31450000","C  -0.99220000 0.72090000 3.31450000","C  -0.99220000 -0.72090000 3.31450000","C  0.37900000 -1.16640000 3.31450000","C  3.40840000 0.72090000 0.59480000","C  2.79510000 1.16640000 1.82130000","C  2.41610000 0.00000000 2.57930000","C  2.79510000 -1.16640000 1.82130000","C  3.40840000 -0.72090000 0.59480000","C  0.36760000 3.46430000 0.59480000","C  -0.24560000 3.01880000 1.82130000","C  0.74660000 2.29790000 2.57930000","C  1.97310000 2.29790000 1.82130000","C  1.73890000 3.01880000 0.59480000","C  -3.18120000 1.42020000 0.59480000","C  -2.94690000 0.69930000 1.82130000","C  -1.95470000 1.42020000 2.57930000","C  -1.57570000 2.58660000 1.82130000","C  -2.33370000 2.58660000 0.59480000","C  -2.33370000 -2.58660000 0.59480000","C  -1.57570000 -2.58660000 1.82130000","C  -1.95470000 -1.42020000 2.57930000","C  -2.94690000 -0.69930000 1.82130000","C  -3.18120000 -1.42020000 0.59480000","C  1.73890000 -3.01880000 0.59480000","C  1.97310000 -2.29790000 1.82130000","C  0.74660000 -2.29790000 2.57930000","C  -0.24560000 -3.01880000 1.82130000","C  0.36760000 -3.46430000 0.59480000","C  0.99220000 0.72090000 -3.31450000","C  -0.37900000 1.16640000 -3.31450000","C  -1.22650000 0.00000000 -3.31450000","C  -0.37900000 -1.16640000 -3.31450000","C  0.99220000 -0.72090000 -3.31450000","C  2.33370000 2.58660000 -0.59480000","C  1.57570000 2.58660000 -1.82130000","C  1.95470000 1.42020000 -2.57930000","C  2.94690000 0.69930000 -1.82130000","C  3.18120000 1.42020000 -0.59480000","C  -1.73890000 3.01880000 -0.59480000","C  -1.97310000 2.29790000 -1.82130000","C  -0.74660000 2.29790000 -2.57930000","C  0.24560000 3.01880000 -1.82130000","C  -0.36760000 3.46430000 -0.59480000","C  -3.40840000 -0.72090000 -0.59480000","C  -2.79510000 -1.16640000 -1.82130000","C  -2.41610000 0.00000000 -2.57930000","C  -2.79510000 1.16640000 -1.82130000","C  -3.40840000 0.72090000 -0.59480000","C  -0.36760000 -3.46430000 -0.59480000","C  0.24560000 -3.01880000 -1.82130000","C  -0.74660000 -2.29790000 -2.57930000","C  -1.97310000 -2.29790000 -1.82130000","C  -1.73890000 -3.01880000 -0.59480000","C  3.18120000 -1.42020000 -0.59480000","C  2.94690000 -0.69930000 -1.82130000","C  1.95470000 -1.42020000 -2.57930000","C  1.57570000 -2.58660000 -1.82130000","C  2.33370000 -2.58660000 -0.59480000",NULL};static char *cyclohexane[] = {"H 0.139767 1.39301 -0.12","C 0.0998334 0.995004 -0.2","H 0.911616 0.411044 1.2","H 1.27626 0.575461 0.12","C 0.911616 0.411044 0.2","H 0.811782 -0.58396 -1.2","H 1.1365 -0.817544 -0.12","C 0.811782 -0.58396 -0.2","H -0.0998334 -0.995004 1.2","H -0.139767 -1.39301 0.12","C -0.0998334 -0.995004 0.2","H -0.911616 -0.411044 -1.2","H -1.27626 -0.575461 -0.12","C -0.911616 -0.411044 -0.2","H -0.811782 0.583961 1.2","H -1.13649 0.817545 0.12","C -0.811782 0.583961 0.2",NULL};static char *ethane[] = {"H 0.0998334 0.995004 -0.6","H 0.911616 0.411044 1.6","H 0.811782 -0.58396 -0.6","H -0.0998334 -0.995004 1.6","H -0.911616 -0.411044 -0.6","H -0.811782 0.583961 1.6","C 0 0 0","C 0 0 1",NULL};static char *water[] = {"O 0 0 0","H -1 1 0","H 1 1 0",NULL};static char **molecules[] = {benzene,buckmisterfullerine,cyclohexane,ethane,water};//----------------------------------------------------------------------------// Prototypes//----------------------------------------------------------------------------static int initConfiguration(void);static int setControlAttributes(void);                   void RenderMolecule(int fastFlag);int LoadMolecule(void);int LoadMoleculeFromArray(char **molecule);//----------------------------------------------------------------------------// main//----------------------------------------------------------------------------int main (int argc, char *argv[]){    int color;         int error = 0;    if (InitCVIRTE (0, argv, 0) == 0)   /* Initialize CVI libraries */        return -1;  /* out of memory */            SetSleepPolicy (VAL_SLEEP_MORE);        if ((demoPanel = LoadPanel (0, "ogldemo.uir", DEMOPANEL)) < 0)        return -1;    if (initConfiguration() < 0)        return -1;            errChk( demoControl = OGLConvertCtrl(demoPanel,DEMOPANEL_PICTURE) );    errChk( setControlAttributes() );    errChk( UPlot(demoPanel,0,EVENT_COMMIT,0,0,0) );        DisplayPanel (demoPanel);        RunUserInterface ();        HidePanel (demoPanel);    OGLDiscardCtrl(demoPanel,demoControl);    DiscardPanel (demoPanel);    Error :    return error;}//----------------------------------------------------------------------------// initConfiguration//----------------------------------------------------------------------------static int initConfiguration(void){    int error = 0;        errChk( sphereConfig.panel = LoadPanel(0, "ogldemo.uir", SPHERE) );    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_RADIUS,&sphereConfig.radius) );    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_LONG_MAX,&sphereConfig.longitude.max) );    errChk( GetCtrlVal(sphereConfig.panel,SPHERE_LONG_MIN,&sphereConfig.longitude.min) );    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) );        errChk( cylinderConfig.panel = LoadPanel(0, "ogldemo.uir", CYLINDER) );    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) );        errChk( torusConfig.panel = LoadPanel(0, "ogldemo.uir", TORUS) );    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) );        errChk( coneConfig.panel = LoadPanel(0, "ogldemo.uir", CONE) );    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) );        errChk( uniformConfig.panel = LoadPanel(0, "ogldemo.uir", UPLOT) );    errChk( GetCtrlVal(uniformConfig.panel,UPLOT_X_MIN,&uniformConfig.x.min) );

⌨️ 快捷键说明

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