计算机图形学作业-运用数值微分法和中点作圆法使用Python的OpenGL库画出时钟
来源:互联网 发布:suse linux 扩磁盘 编辑:程序博客网 时间:2024/05/19 23:10
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=0def 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()
0 0
- 计算机图形学作业-运用数值微分法和中点作圆法使用Python的OpenGL库画出时钟
- 用Python&OpenGL采用数值微分法和中点画圆法写图形学作业——会动的时钟
- 中点画线法(计算机图形学)
- 【win32】计算机图形学——中点法画线和八分法画圆
- 计算机图形学 运用 中点分割直线段裁剪算法原理
- 计算机图形学 - 抛物线的中点生成算法
- OpenGL的计算机图形学
- 计算机图形学的课程设计作业
- opengl中点精灵的使用
- 中点画线法画任意斜率的直线(计算机图形学)
- 计算机图形学 - 圆的中点生成算法验证
- 计算机图形学 – 椭圆的中点生成算法
- 计算机图形学:中点划线法(任意斜率)
- 计算机图形学——OpenGL基本使用
- python画出来的电子时钟
- 中点画线算法(计算机图形学)
- 《高级计算机图形学》大作业的报告
- 计算机图形学 OPENGL学习
- 自动循迹小车系统方案设计(二)
- androidQQ登录获取用户信息
- JAVA函数、构造函数、重载、this
- oracle中merge使用
- 设计模式的七大准则
- 计算机图形学作业-运用数值微分法和中点作圆法使用Python的OpenGL库画出时钟
- Android开发-----关于解决Retrofit打印HttpLog和设置连接超时的问题
- 区块链 Hyperledger
- Python学习笔记(五)
- ORACLE 10g关于全局数据库名和SID的简介
- BottomBar有文字的情况
- Windows下编码在Linux系统下中文乱码解决方案
- 【google code jam Qualification Round 2017】【Oversized Pancake Flipper】【贪心】
- Java数组类型的定义和初始化