python使用opengl绘制圆,y=x**2,y=math.sqrt(x)

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()
执行的结果如下:


python使用opengl绘制圆,y=x**2,y=math.sqrt(x)_第1张图片

你可能感兴趣的:(python使用opengl绘制圆,y=x**2,y=math.sqrt(x))