1. 算法:
2. 源代码:
#include "stdafx.h"
#include "GL/glut.h"
#include "stdlib.h"
#include "math.h"
void init()
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,150.0);
}
inline int round(const float a)
{
return int(a+0.5);
}
void setPixel(int x, int y)
{
glBegin(GL_POINTS);
glVertex2i(x,y);
glEnd();
}
void lineDDA(int x0,int y0,int xEnd,int yEnd)
{
int dx=xEnd-x0, dy=yEnd-y0, steps, k;
float xIncrement, yIncrement, x=x0, y=y0;
if(fabs(dx)>fabs(dy))
steps=fabs(dx);
else
steps=fabs(dy);
xIncrement=float(dx)/float(steps);
yIncrement=float(dy)/float(steps);
setPixel(round(x),round(y));
for(k=0; k<steps; k++)
{
x+=xIncrement;
y+=yIncrement;
setPixel(round(x),round(y));
}
}
void render()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
lineDDA(0,150,150,0);
lineDDA(1,1,300,300);
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50,100);
glutInitWindowSize(600,400);
glutCreateWindow("Line");
init();
glutDisplayFunc(render);
glutMainLoop();
return 0;
}
3. 结果:
分享到:
相关推荐
计算机图形学 直线DDA算法计算机图形学 直线DDA算法计算机图形学 直线DDA算法计算机图形学 直线DDA算法计算机图形学 直线DDA算法计算机图形学 直线DDA算法计算机图形学 直线DDA算法计算机图形学 直线DDA算法计算机...
计算机图形学课程实验之直线生成的c语言程序模板
计算机图形学直线的各种生成算法,特别适合学习计算机图形学的初学者学习交流,很好的代码,但是还是有很大的完善空间,大家一起努力吧
在光栅显示器的荧光屏上生成一个对象,实质上是往帧缓存寄存器的相应单元中填入数据。画一条从(x1, y1)到(x2, y2)的直线,实质上是一个发现最佳逼近直线的象素序列,并填入色彩数据的过程。这个过程也称为直线...
vc 计算机图形学直线生成通用算法 DDA算法
MFC法,计算机图形学,画直线生成的方法,几个主要生成的代码段
计算机图形学直线的转换生成实验报告含源代码实验结果
计算机图形学课设---包括opengl,直线、圆生成,二维变换 ,MFC设计。
计算机图形学基本图形生成算法,MATLAB编程实现,其中包括直线生成算法,圆及椭圆生成算法,图形填充,变换等各种算法
这是图形学实验 ,大学计科选修的一门专业, 这个实验关于直线生产算法
直线和圆的生成算法,直线曲线都是点的集合 点是图形中最基本的图素,直线、曲线以及其它图元都是点的集合。
计算机图形学 直线生成算法实现.doc
计算机图形学 直线段生成绘制的实现算法.doc
本资源是计算机图形学直线的中点生成算法的实现,里面有详细的代码。
计算机图形学直线段生成绘制的实现算法.pdf
(1) 根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果,写入实验报告; (2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告; (3) 根据示范代码,将...
这段时间弄了很多图形学方面的算法,如DDA画直线算法,以及MidpointLine、BresenhamLine、还有画圆的BresenhamCircle、MidpointCircle以及多种 种子填充算法,如Floodfill、ScanlineSeedfill、ET边表的 Polygonfill...
java实现的计算机图形学直线和圆的绘制算法,包括DDA算法,中点直线算法,Bresenham算法以及中点画圆算法,集成在一个UI中,方便直观。