计算机图形学课程实验python——DDA直线生成算法

只是实现了算法的思想,因为不会用OpenGL画像素点,无奈只能用大大的点来代替像素。其实用自带的turtle完全可以实现相同效果。

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

def DDA(x1, y1, x2, y2):
    dx = x2 - x1
    dy = y2 - y1
    maxxy = max(abs(dx),abs(dy))
    stepx = dx / maxxy  #步长
    stepy = dy / maxxy
    glBegin(GL_POINTS)
    for i in range(maxxy + 1):
        x = x1 + stepx * i
        y = y1 + stepy * i
        ix = sswr(x)
        iy = sswr(y)
        glVertex2i(ix,iy)
    glEnd()
    #对比的线
    glBegin(GL_LINES)
    glVertex2i(x1, y1)
    glVertex2i(x2, y2)
    glEnd()
    glFlush()


def sswr(x):    #四舍五入
    if x >= 0:
        return int(x+0.5)
    else:
        return int(x-0.5)

def Display():
    glColor3f(1.0, 0.0, 0.0)
    glPointSize(5)
    #glEnable(GL_POINT_SMOOTH)
    DDA(-25,30,20,-25)

def main():
    glutInit()
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
    glutInitWindowSize(400, 400)
    glutCreateWindow("DDA")
    gluOrtho2D(-40,4
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值