python中使用opengl绘制简单的函数图像。
#coding=utf-8
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
import math
import sys
def init():
glClearColor(1.0, 1.0, 1.0, 1.0) #用白色清屏
gluOrtho2D(-5.0, 5.0, -5.0, 5.0) #设置为2D坐标系,维度为5.0
def plotfunc():
glClear(GL_COLOR_BUFFER_BIT) #清除缓存
glColor3f(0.0, 0.0, 0.0) #设置颜色表的当前颜色
glPointSize(1.0) #设置点的大小
glBegin(GL_LINES)
glVertex2f(-5.0, 0.0)
glVertex2f(5.0, 0.0)
glVertex2f(0.0, 5.0)
glVertex2f(0.0, -5.0)
glEnd()
a = 0.0
r = 2.0
while a < 2*math.pi: #画一个360度的圆
x = r*math.sin(a)
y = r*math.cos(a)
glBegin(GL_POINTS)
glVertex2f(x, y)
glEnd()
a += 0.01 #步长,从概念上来讲,当然越细越好。但是屏幕是像素构成的,适合就好
x = -4.0
while x <= 4.0: #绘制函数y=x**2
y = x**2
glBegin(GL_POINTS)
glVertex2f(x, y)
glEnd()
x += 0.01
x = 0.0
while x <= 4.0: #绘制函数y = math.sqrt(x),就是开根号
y = math.sqrt(x)
y2 = x
glBegin(GL_POINTS)
glVertex2f(x, y)
glVertex2f(x, y2)
glEnd()
x += 0.01
glFlush()
def main():
glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB) #RGB颜色模式,单缓冲
glutInitWindowSize(500, 500)
glutInitWindowPosition(100, 100)
glutCreateWindow("Function plotter")
glutDisplayFunc(plotfunc)
init()
glutMainLoop()
main()执行的结果如下: