




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include #include #include #include #define GLUT_WHEEL_UP 3 /定义滚轮操作 #define GLUT_WHEEL_DOWN 4 float PI = 3.1415926;float points83 = -1.0,-1.0,-1.0,1.0,-1.0,-1.0, 1.0,1.0,-1.0, -1.0,1.0,-1.0, -1.0,-1.0,1.0, 1.0,-1.0,1.0,1.0,1.0,1.0, -1.0,1.0,1.0; float colors63=0,1,1,0,0,1,1,0,0,1,1,0,0,1,0,1,0,1;int faces64=4,5,6,7,1,2,6,5,0,3,2,1,0,4,7,3,0,1,5,4,2,3,7,6;float x4,y4,z4;float anglex=PI*30/180,angley=PI*30/180,anglez=PI*30/180;float size = 1.0;GLubyte aoyun=/0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0; 0x00,0x00,0x00,0x00,0x00,0x1E,0x07,0x00, 0x03,0xFE,0x0F,0x80,0x07,0xFF,0x07,0xF0, 0x0F,0xFF,0x83,0xF0,0x0F,0xFF,0xC1,0xF0, 0x0F,0xFF,0xF0,0xF8,0x0F,0xFF,0xF8,0x78, 0x0F,0xF3,0xF8,0x38,0x0F,0x80,0x7C,0x38, 0x0F,0x00,0x38,0x78,0x07,0x04,0x30,0x70, 0x0F,0x0C,0x20,0xF8,0x07,0x0C,0x01,0xF8, 0x07,0x0C,0x03,0xF8,0x00,0x0C,0x0F,0xF8, 0x08,0x18,0x1F,0xF0,0x0E,0x38,0x0F,0xF0, 0x0F,0xF0,0x8F,0xF0,0x0F,0xF0,0x8F,0xF0, 0x0F,0xF0,0x8F,0xF0,0x06,0x00,0x0F,0xF0, 0x04,0x00,0x03,0xF0,0x04,0x00,0x00,0x60, 0x06,0x7F,0xF0,0x00,0x07,0x7E,0x3E,0x00, 0x03,0xFC,0x3F,0x80,0x03,0xFC,0x3F,0x80, 0x01,0xFE,0x7E,0x00,0x00,0xFF,0xF0,0x00, 0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00;void Rotationx(float x_,float y_,float z_,int i)/点饶X轴旋转时,改变一个点的坐标xi = x_;yi = y_*cos(anglex) - z_*sin(anglex);zi = y_*sin(anglex) + z_*cos(anglex); void Rotationy(float x_,float y_,float z_,int i)/点饶Y轴旋转时,改变一个点的坐标xi = x_*cos(angley) + z_*sin(angley);yi = y_;zi = z_*cos(angley) - x_*sin(angley);void Rotationz(float x_,float y_,float z_,int i)/点饶Z轴旋转时,改变一个点的坐标xi = x_*cos(anglez) - y_*sin(anglez);yi = x_*sin(anglez) + y_*cos(anglez);zi = z_;void Changex(int a,int b,int c,int d)/一个平面饶X轴旋转时4个点坐标的该改Rotationx(pointsa0,pointsa1,pointsa2,0);Rotationx(pointsb0,pointsb1,pointsb2,1);Rotationx(pointsc0,pointsc1,pointsc2,2);Rotationx(pointsd0,pointsd1,pointsd2,3);void Changey()/一个平面饶Y轴旋转时4个点坐标的该改Rotationy(x0,y0,z0,0);Rotationy(x1,y1,z1,1);Rotationy(x2,y2,z2,2);Rotationy(x3,y3,z3,3);void Changez()/一个平面饶Y轴旋转时4个点坐标的该改Rotationz(x0,y0,z0,0);Rotationz(x1,y1,z1,1);Rotationz(x2,y2,z2,2);Rotationz(x3,y3,z3,3);void init()/初始化 / glEnable(GL_DEPTH_TEST); glClearColor (1.0, 1.0, 1.0, 0.0);void polygon(int i) /画一个平面glEnable (GL_POLYGON_STIPPLE);glPolygonStipple (aoyun);glBegin(GL_POLYGON);glColor3fv(colorsi);glVertex3f(x0*size,y0*size,z0*size); glVertex3f(x1*size,y1*size,z1*size);glVertex3f(x2*size,y2*size,z2*size); glVertex3f(x3*size,y3*size,z3*size);glEnd(); int IsVisible()/判断一个面是否可见float a1=x1-x0;float a2=y1-y0;float a3=z1-z0;float b1=x2-x1;float b2=y2-y1;float b3=z2-z1;/float x=a2*b3-a3*b2;/float y=-(a1*b3-a3*b1);float z=a1*b2-a2*b1;/求出法向量(x,y,z)if(z0)return 1;else return 0;void Draw(void) int a,b,c,d;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); for(int i=0;i6;i+)a = facesi0;b = facesi1;c = facesi2;d = facesi3;Changex(a,b,c,d);Changey();Changez();if(IsVisible()=1)polygon(i);elsecontinue;glutSwapBuffers(); void ChangeWindowsize(int w, int h) glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w = h) glOrtho(-3.0, 3.0, -3.0 * (float) h / (float) w, 3.0 * (float) h / (float) w, -3.0, 3.0);else glOrtho(-3.0 * (float) w / (float) h, 3.0 * (float) w / (float) h, -3.0, 3.0, -3.0, 3.0);glMatrixMode(GL_MODELVIEW); void Changeangle(int key, int x,int y)if (key=GLUT_KEY_DOWN)anglex -= 2.0*PI/180; glutPostRedisplay();if (key=GLUT_KEY_UP)anglex += 2.0*PI/180; glutPostRedisplay();if (key=GLUT_KEY_LEFT)angley -= 2.0*PI/180; glutPostRedisplay();if(key=GLUT_KEY_RIGHT)angley += 2.0*PI/180; glutPostRedisplay();if(key = GLUT_KEY_F1)anglez += 2.0*PI/180;glutPostRedisplay();if(key = GLUT_KEY_F2)anglez -= 2.0*PI/180;glutPostRedisplay();if(key = GLUT_KEY_F3)if(size 0.5)size-=0.02;glutPostRedisplay();void processMouse(int button, int state,int x,int y) if (button = GLUT_LEFT_BUTTON) if(size 0.5)size-=0.02;glutPostRedisplay(); void main (int argc, char *argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE |GLUT_RGB | GLUT_DEPTH);glutInitWindo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏泰州市姜堰中医院招聘卫生专业技术人员30人模拟试卷完整答案详解
- 2025辽宁沈阳高新人力资源服务有限公司森林警卫队员储备岗招聘模拟试卷及完整答案详解一套
- 2025江苏苏州市相城区教育系统招聘事业编制教师66人模拟试卷及答案详解(易错题)
- 2025广西南宁市五象新区第一实验小学招聘5人模拟试卷及完整答案详解1套
- 2025年河北顺德投资集团有限公司公开招聘劳务派遣人员4名模拟试卷及答案详解(易错题)
- 2025贵阳学院人才引进15人模拟试卷(含答案详解)
- 2025年福建省福州地铁实业有限公司招聘1人考前自测高频考点模拟试题完整参考答案详解
- 2025中国雄安集团有限公司社会招聘50人笔试题库历年考点版附带答案详解
- 美国旅游课件
- 2025合作协议书模板
- 经济与社会 思维导图式复习课件高中政治统编版必修二经济与社会
- 《系统工程与决策分析》全册配套课件
- DL∕T 2033-2019 火电厂用高压变频器功率单元试验方法
- 高中数学-斐波那契数列与黄金分割教学设计
- 数据驱动的教育决策
- 农作物植保员职业技能竞赛题库及答案
- T梁湿接缝及横隔梁施工方案
- (完整)易制毒化学品使用管理责任书
- 石群邱关源电路课件(第8至16单元)白底
- 个人增资入股合同
- GB/T 6579-2007实验室玻璃仪器热冲击和热冲击强度试验方法
评论
0/150
提交评论