圆弧终点
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def zhong(R):
x = 0
yr = R
d = 5/4 - R
glBegin(GL_POINTS)
while yr >= x:
yuan(x,yr)
if d <= 0:
d = d + 2 * x + 3
else:
d = d + 2 * (x - yr) + 5
yr -= 1
x += 1
glEnd()
glFlush()
def yuan(x,y):
glVertex2i(x,y)
glVertex2i(-x,-y)
glVertex2i(-x,y)
glVertex2i(x,-y)
glVertex2i(y,-x)
glVertex2i(-y,x)
glVertex2i(-y,-x)
glVertex2i(y,x)
def Display():
glColor3f(1.0, 0.0, 0.0)
glPointSize(7)
#glEnable(GL_POINT_SMOOTH)
zhong(30)
def main():
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(700, 700)
glutCreateWindow("zhong")
gluOrtho2D(-50,50,-50,50)
glClearColor(1.0,1.0,1.0,0)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glutDisplayFunc(Display)
glutMainLoop()
main()
运行结果
圆弧正负
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def zhengfu(R):
D = 1
x = 0
y = R
glBegin(GL_POINTS)
yuan(x,y)
x = 1
yuan(x,y)
while y >= 0:
if D >= 0:
D = D - 2 * y + 1
y -= 1
else:
D = D + 2 * x + 1
x += 1
yuan(x,y)
glEnd()
glFlush()
def yuan(x,y):
glVertex2i(x,y)
glVertex2i(-x,-y)
glVertex2i(-x,y)
glVertex2i(x,-y)
def Display():
glColor3f(1.0, 0.0, 0.0)
glPointSize(10)
#glEnable(GL_POINT_SMOOTH)
zhengfu(20)
def main():
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(800, 800)
glutCreateWindow("zhong")
gluOrtho2D(-40,40,-40,40)
glClearColor(1.0,1.0,1.0,0)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glutDisplayFunc(Display)
glutMainLoop()
main()
运行结果
不太好看
椭圆中点
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def zhong(a,b):
r = (a**2 + b**2)**(1/2)
midx = int((a**2)/r + 0.5)
midy = int((b**2)/r + 0.5)
x = 0
yr = int(b + 0.5)
d = 4 * b**2 - 4 * a**2 * b + a**2
glBegin(GL_POINTS)
while x <= midx:
tuoyuan(x,yr)
if d > 0:
yr -= 1
d = d + 4 * b**2 * (2*x + 3) - 8 * a**2 * yr
else:
d = d + 4 * b**2 * (2*x + 3)
x += 1
xr = int(a + 0.5)
y = 0
d = 4 * a**2 - 4 * a * b**2 + b**2
while y <= midy:
tuoyuan(xr, y)
if d > 0:
xr -= 1
d = d + 4 * a**2 * (2*y + 3) - 8 * b**2 * xr
else:
d = d + 4 * a**2 * (2*y + 3)
y += 1
glEnd()
glFlush()
def tuoyuan(x,y):
glVertex2i(x,y)
glVertex2i(x,-y)
glVertex2i(-x,-y)
glVertex2i(-x,y)
def Display():
glColor3f(1.0,0.0,0.0)
glPointSize(8)
zhong(35,20)
def main():
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(800, 800)
glutCreateWindow("zhong")
gluOrtho2D(-50,50,-50,50)
glClearColor(1.0,1.0,1.0,0)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glutDisplayFunc(Display)
glutMainLoop()
main()
运行结果