计算机图形学作业-运用数值微分法和中点作圆法使用Python的OpenGL库画出时钟
2017-04-11 15:48
911 查看
from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * from math import * import time def Display(): glClear(GL_COLOR_BUFFER_BIT) glBegin(GL_POINTS) MidCircle(0,0,15) glEnd() PI=3.1415926 R=15 TR=R-1 glLineWidth(2) for i in range(100): DrawLines(TR*sin(2*PI/12*i),TR*cos(2*PI/12*i),R*sin(2*PI/12*i),R*cos(2*PI/12*i)) h_Length=5 m_Length=8 s_Length=12 count=60.0 s_Angle=s/count count*=60 m_Angle=(m*60+s)/count count*=12 h_Angle=(h*60*60+m*60+s)/count glLineWidth(1) DrawLines(0.0,0.0,s_Length*sin(2*PI*s_Angle),s_Length*cos(2*PI*s_Angle)) glLineWidth(5) DrawLines(0.0,0.0,h_Length*sin(2*PI*h_Angle),h_Length*cos(2*PI*h_Angle)) glLineWidth(3) DrawLines(0.0,0.0,m_Length*sin(2*PI*m_Angle),m_Length*cos(2*PI*m_Angle)) glLineWidth(1) glBegin(GL_POLYGON) for i in range(100): glVertex2f(0.03*cos(2*PI/100*i),0.03*sin(2*PI/100*i)); glEnd() glFlush() def MidCircle(x0,y0,r): #中点画圆法作圆 x=x0 y=y0+r deltax=3 deltay=2-r-r d=1-r glVertex2i(x,y) while(x<y): if(d<0): d=d+deltax deltax=deltax+2 x=x+1 else: d=d+deltax+deltay deltax=deltax+2 deltay=deltay+2 x=x+1 y=y-1 glVertex2i(x,y) glVertex2i(y,x) glVertex2i(x,y0+y0-y) glVertex2i(y0+y0-y,x) glVertex2i(x0+x0-x,y) glVertex2i(y,x0+x0-x) glVertex2i(x0+x0-x,y0+y0-y) glVertex2i(y0+y0-y,x0+x0-x) def DrawLines(x0,y0,xn,yn): #数值微分法画直线 dx = float(xn) - float(x0) dy = float(yn) - float(y0) steps = 0 deltaX = 0 deltaY = 0 x = x0 y = y0 if(abs(dx) > abs(dy)): steps = int(fabs(dx)*100) else: steps = int(fabs(dy)*100) deltaX = dx / float(steps) deltaY = dy / float(steps) glBegin(GL_POINTS) for i in range(steps): x += deltaX y += deltaY glVertex2f(x, y) glEnd() h=0 m=0 s=0 def Update(): global h,m,s t=time.localtime(time.time()) h=int(time.strftime('%H',t)) m=int(time.strftime('%M',t)) s=int(time.strftime('%S',t)) glutPostRedisplay() glutInit() glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB) glutInitWindowPosition(200,200) glutInitWindowSize(400,400) glutCreateWindow("Three Window") glOrtho(-20,20,-20,20,1.0,-1.0) glutDisplayFunc(Display) glutIdleFunc(Update) glutMainLoop()
相关文章推荐
- 计算机图形学作业 - 运用Python-OpenGL设计一个带键盘控制的三维模型
- 计算机图形学作业 - 运用PyOpenGL使用区域填充的递归算法(种子填充)绘制“明”字
- 计算机图形学(二)输出图元_6_OpenGL曲线函数_4_中点椭圆算法(上)
- 计算机图形学——OpenGL渲染基础架构二之着色器的使用
- 计算机图形学(二)输出图元_6_OpenGL曲线函数_2_中点画圆算法
- 计算机图形学 运用 中点分割直线段裁剪算法原理
- 计算机图形学Opengl实现二维图形的…
- 计算机图形学(OpenGL版)-OpenGL基本几何图元
- 有效使用Python完成信息论作业
- python使用opengl绘制圆,y=x**2,y=math.sqrt(x)
- 填充图形属性&nbsp;计算机图形学&nbsp;Opengl
- [OpenGL]计算机图形学:基于Articulated Models的机械手臂实例
- 计算机图形学(OpenGL版)-第一个OpenGL程序
- SDL Linux下的使用 计算机图形学
- 计算机图形学——OpenGL开发库开发库
- 计算机图形学——OpenGL开发库开发库
- 《Exchange》使用ExchangeService时:客户端和服务器计算机上的时钟是不一致的
- 有效使用Python来完成数论作业之同余式
- 计算机图形学第二章---概论(OpenGL简介)
- 使用python 在已知圆弧两个端点和中点坐标 计算圆弧的圆心坐标