Рисование отрезков, окружности и эллипса
Автор: Мария Карпиеня • Октябрь 14, 2020 • Лабораторная работа • 1,049 Слов (5 Страниц) • 654 Просмотры
Карпиеня М.В.
Лабораторная 1
Рисование отрезков, окружности и эллипса
Для решения задачи код написан на языке Python (прикреплены 3 файла):
lab1_Karpiyenia_line.py
lab1_Karpiyenia_circle.py
lab2_Karpiyenia_ellipse.py
Использованы алгоритмы Брезенхема для построения отрезка, окружности, эллипса.
Входящие параметры (координаты, радиус, А и В для эллипса) задаются рандомно
- Основная логика для построения отрезка
def draw():
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
iterate()
dot(ax, ay)
dot(bx, by)
tx=ax
ty=ay
dx=math.fabs(bx-ax)
dy=math.fabs(by-ay)
s1=numpy.sign(bx-ax)
s2=numpy.sign(by-ay)
if(dy>dx):
temp=dx
dy=temp
flg= True
else:
flg=False
t=2*dy-dx
i=1
while (i
dot(tx, ty)
while(t>0):
if flg==True:
tx=tx+s1
else:
ty=ty+s2
t=t-2*dx
if flg==True:
ty = ty + s2
else:
tx = tx + s1
t=t+2*dy
i=i+1
glutSwapBuffers()
[pic 1] [pic 2]
- Основная логика для построения окружности
def draw():
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
iterate()
dot(cx, cy)
x1 = 0
y1 = r
d = 3 - 2 * r
u=6
v=10-4*r
while v<10:
dot( x=cx + x1, y=cy + y1)
dot(x=cx + x1, y=cy - y1)
dot(x=cx - x1, y=cy + y1)
dot(x=cx - x1, y=cy - y1)
dot(x=cx + y1, y=cy + x1)
dot(x=cx + y1, y=cy - x1)
dot(x=cx - y1, y=cy + x1)
dot(x=cx - y1, y=cy - x1)
if d < 0 :
x1 += 1
d=d+u
u=u+4
v=v+4
...