技术
PyOpenGL
run函数的运行框架
https://www.cnblogs.com/lusonixs/p/17038379.html
四棱锥 摆放方面 四棱锥放在左侧,可以看到一部分侧面。(摆放在正中可能就看不到了) 模型方面 因为看不到底面,就省略了底面的绘制。 代码(py) def drawObject(): # 三角形 # 先移动到三角形的中心位置开始绘制 # 为了看到全貌,距离屏幕6个单位的地方绘制 # 四棱锥放在左侧,可以看到一部分侧面。(摆放在正中可能就看不到了) glTranslatef(-1.5,0.0,-6.0) glBegin(GL_TRIANGLES) # 前侧面 glColor3f(1.0,0.0,0.0) # 红色 glVertex3f( 0.0, 1.0, 0.0) # 三角形的上顶点 (前侧面) glColor3f(0.0,1.0,0.0) # 绿色 glVertex3f(-1.0,-1.0, 1.0) # 三角形的左下顶点 (前侧面) glColor3f(0.0,0.0,1.0) # 蓝色 glVertex3f( 1.0,-1.0, 1.0) # 三角形的右下顶点 (前侧面) # 右侧面 glColor3f(1.0,0.0,0.0) # 红色 glVertex3f( 0.0, 1.0, 0.0) # 三角形的上顶点 (右侧面) glColor3f(0.0,0.0,1.0) # 蓝色 glVertex3f( 1.0,-1.0, 1.0) # 三角形的左下顶点 (右侧面) glColor3f(0.0,1.0,0.0) # 绿色 glVertex3f( 1.0,-1.0, -1.0) # 三角形的右下顶点 (右侧面) # 后侧面 glColor3f(1.0,0.0,0.0) # 红色 glVertex3f( 0.0, 1.0, 0.0) # 三角形的上顶点 (后侧面) glColor3f(0.0,1.0,0.0) # 绿色 glVertex3f( 1.0,-1.0, -1.0) # 三角形的左下顶点 (后侧面) glColor3f(0.0,0.0,1.0) # 蓝色 glVertex3f(-1.0,-1.0, -1.0) # 三角形的右下顶点 (后侧面) # 左侧面 glColor3f(1.0,0.0,0.0) # 红色 glVertex3f( 0.0, 1.0, 0.0) # 三角形的上顶点 (左侧面) glColor3f(0.0,0.0,1.0) # 蓝色 glVertex3f(-1.0,-1.0,-1.0) # 三角形的左下顶点 (左侧面) glColor3f(0.0,1.0,0.0) # 绿色 glVertex3f(-1.0,-1.0, 1.0) # 三角形的右下顶点 (左侧面) glEnd() run(drawObject)
立方体 代码(py) def drawObject(): # 立方体 # 先移动到立方体的中心位置开始绘制 # 为了看到全貌,距离屏幕6个单位的地方绘制 # 立方体放在右侧,可以看到一部分侧面。(摆放在正中可能就看不到了) glTranslatef(1.5,0.0,-6.0) glBegin(GL_QUADS) # 顶面 glColor3f(0.0,1.0,0.0) # 颜色改为蓝色 glVertex3f( 1.0, 1.0,-1.0) # 四边形的右上顶点 (顶面) glVertex3f(-1.0, 1.0,-1.0) # 四边形的左上顶点 (顶面) glVertex3f(-1.0, 1.0, 1.0) # 四边形的左下顶点 (顶面) glVertex3f( 1.0, 1.0, 1.0) # 四边形的右下顶点 (顶面) # 底面 glColor3f(1.0,0.5,0.0) # 颜色改成橙色 glVertex3f( 1.0,-1.0, 1.0) # 四边形的右上顶点(底面) glVertex3f(-1.0,-1.0, 1.0) # 四边形的左上顶点(底面) glVertex3f(-1.0,-1.0,-1.0) # 四边形的左下顶点(底面) glVertex3f( 1.0,-1.0,-1.0) # 四边形的右下顶点(底面) # 前面 glColor3f(1.0,0.0,0.0) # 颜色改成红色 glVertex3f( 1.0, 1.0, 1.0) # 四边形的右上顶点(前面) glVertex3f(-1.0, 1.0, 1.0) # 四边形的左上顶点(前面) glVertex3f(-1.0,-1.0, 1.0) # 四边形的左下顶点(前面) glVertex3f( 1.0,-1.0, 1.0) # 四边形的右下顶点(前面) # 后面 glColor3f(1.0,1.0,0.0) # 颜色改成黄色 glVertex3f( 1.0,-1.0,-1.0) # 四边形的右上顶点(后面) glVertex3f(-1.0,-1.0,-1.0) # 四边形的左上顶点(后面) glVertex3f(-1.0, 1.0,-1.0) # 四边形的左下顶点(后面) glVertex3f( 1.0, 1.0,-1.0) # 四边形的右下顶点(后面) # 左面 glColor3f(0.0,0.0,1.0) # 颜色改成蓝色 glVertex3f(-1.0, 1.0, 1.0) # 四边形的右上顶点(左面) glVertex3f(-1.0, 1.0,-1.0) # 四边形的左上顶点(左面) glVertex3f(-1.0,-1.0,-1.0) # 四边形的左下顶点(左面) glVertex3f(-1.0,-1.0, 1.0) # 四边形的右下顶点(左面) # 右面 glColor3f(1.0,0.0,1.0) # 颜色改成紫罗兰色 glVertex3f( 1.0, 1.0,-1.0) # 四边形的右上顶点(右面) glVertex3f( 1.0, 1.0, 1.0) # 四边形的左上顶点(右面) glVertex3f( 1.0,-1.0, 1.0) # 四边形的左下顶点(右面) glVertex3f( 1.0,-1.0,-1.0) # 四边形的右下顶点(右面) glEnd() run(drawObject)
扇形 特点 * 没有厚度。 * 圆盘位于X0Y平面。 代码(py) p1=0 p2=0.01 part1=0 part2=0 def DrawCylinder(): global p1,p2,part1,part2 part1+=p1 part2+=p2 if part1>359: p1=0 part1=0 p2=0.01 part2=0 if part2>359: p1=0.01 p2=0 glTranslatef(0.0, 0.0, -5.0) Q=gluNewQuadric() glColor3f(1.0, 1.0, 1.0) # 白色的圆锥体 gluPartialDisk(Q,0.5,1.5,32,32,part1,part2-part1) gluDeleteQuadric( Q ) run(DrawCylinder)
带孔圆盘 绕Y轴旋转 创建一个CD样子的带孔圆盘。 特点 * 没有厚度。 * 圆盘位于X0Y平面。 代码(py) rtri=0 def DrawDisk(): global rtri glTranslatef(0.0, 0.0, -5.0) Q=gluNewQuadric() glRotatef(rtri,0.0,1.0,0.0) glColor3f(1.0, 1.0, 1.0) # 白色的圆柱体 gluDisk(Q,0.5,1.5,32,32) gluDeleteQuadric( Q ) rtri+=0.02 run(DrawDisk)
圆柱体 绕Y轴旋转 特点 * 没有顶面和底面。 * 圆柱体底面默认为X0Y平面。 * 圆柱体顶面默认向Z轴正方向延伸。 代码(py) rtri=0 def DrawCylinder(): global rtri glTranslatef(0.0, 0.0, -5.0) Q=gluNewQuadric() glRotatef(rtri,0.0,1.0,0.0) glColor3f(1.0, 1.0, 1.0) # 白色的圆柱体 gluCylinder(Q,1.0,1.0,3.0,32,32) gluDeleteQuadric( Q ) rtri+=0.02 run(DrawCylinder)
二次曲面:球体 二次曲面绘制的球,包括两层纹理,一层是球的纹理,一层是高光纹理,高光纹理以40%的透明度混合而成。 代码(py) ballr=0.17 def DrawBall(): glTranslatef(0.0, 0.0, -5.0) Q=gluNewQuadric() gluQuadricNormals(Q, GL_SMOOTH) gluQuadricTexture(Q, GL_TRUE) glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP) glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP) glColor3f(1.0, 1.0, 1.0) # 白色的球 glBindTexture( GL_TEXTURE_2D, LoadTextures('Ball.bmp') ) # 球的纹理贴图 global ballr gluSphere(Q, ballr*2, 32, 32) glBindTexture( GL_TEXTURE_2D, LoadTextures('Envroll.bmp') ) # 设置为环境纹理 glColor4f(1.0, 1.0, 1.0, 0.4) # 使用alpha为40%的白色 glEnable(GL_BLEND) # 启用混合 glBlendFunc(GL_SRC_ALPHA, GL_ONE) # 把原颜色的40%与目标颜色混合 glEnable(GL_TEXTURE_GEN_S) glEnable(GL_TEXTURE_GEN_T) gluSphere(Q, ballr*2, 32, 32) # 绘制球体,并混合 glDisable(GL_TEXTURE_GEN_S) glDisable(GL_TEXTURE_GEN_T) glDisable(GL_BLEND) gluDeleteQuadric( Q ) run(DrawBall)
标签:带孔,glColor3f,glVertex3f,0.0,棱锥,四边形,顶点,立方体,1.0 From: https://www.cnblogs.com/lusonixs/p/17161774.html