资源简介
该资源包主要包含了在dev环境下通过glut实现中点画线算法的完整代码

代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
int xs ys xe ye;
void init(void)
{
glClearColor(1.0 1.0 1.0 0.0); // Set display-window color to white.
glMatrixMode(GL_PROJECTION); // Set projection parameters.
gluOrtho2D(0.0 200.0 0.0 150.0);
}
/*
数值微分方法画线
*/
void MidpointLine(int x1 int y1 int x2 int y2)
{
glColor3f(1.0 0.0 0.0); // 红色
glPointSize(2.0f);
/*
两点重合尚未判断glVertex2i(x y);
*/
int x = x1 y = y1;
int a = y1 - y2 b = x2 - x1;
int cx = (b >= 0 ? 1 : (b = -b -1));
int cy = (a <= 0 ? 1 : (a = -a -1));
glVertex2i(x y);
int d d1 d2;
if (-a <= b) // 斜率绝对值 <= 1
{
d = 2 * a + b;
d1 = 2 * a;
d2 = 2 * (a + b);
while(x != x2)
{
if (d < 0)
y += cy d += d2;
else
d += d1;
x += cx;
glVertex2i(x y);
}
}
else // 斜率绝对值 > 1
{
d = 2 * b + a;
d1 = 2 * b;
d2 = 2 * (a + b);
while(y != y2)
{
if(d < 0)
d += d1;
else
x += cx d += d2;
y += cy;
glVertex2i(x y);
}
}
}
void LineDDA1(int x1 int y1 int x2 int y2)
{
glColor3f(0.0 0.0 0.0); // 黑色
glPointSize(2.0f);
/*
两点重合尚未判断
*/
int dm = 0;
if (abs(x2 - x1) >= abs(y2 - y1))
{
dm = abs(x2 - x1); // x 为计长方向
}
else
{
dm = abs(y2 - y1); // y 为计长方向
}
float dx = (float)(x2 - x1) / dm; // 当 x 为计长方向,dx = 1
float dy = (float)(y2 - y1) / dm; // 当 y 为计长方向,dy = 1
float x = x1;
float y = y1;
for (int i = 0; i < dm; ++i)
{
glBegin(GL_POINTS);
glVertex2f((int)x (int)y);
glEnd();
glFlush();
x += dx;
y += dy;
}
}
/*
交换两个int 类型的变量的值
*/
void swap_value(int* a int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
// 窗口大小改变时调用的登记函数
void ChangeSize(GLsizei w GLsizei h)
{
if (h == 0) h = 1;
// 设置视区尺寸
glViewport(0 0 w h);
// 重置坐标系统
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// 建立修剪空间的范围
if (w <= h)
glOrtho(0.0f 250.0f 0.0f 250.0f*h / w 1.0 -1.0);
else
glOrtho(0.0f 250.0f*w / h 0.0f 250.0f 1.0 -1.0);
}
void lineSegment()
{
//glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0 0.0 0.0);
glBegin(GL_POINTS);
MidpointLine(xs ys xe ye);
glEnd();
glFlush();
}
/*
*/
void display(void)
{
// 用当前背景色填充窗口,如果不写这句会残留之前的图像
glClear(GL_COLOR_BUFFER_BIT);
xs = 20; ys = 120; xe = 120; ye = 40;
for(int i=8x12 = 10 y12 = 10 x22 = 210 y22 = 10;i>1;i--)
{
LineDDA1(x12 y12 x22 y22);
y12+=20;
y22+=20;
}
for(int j=12x13=10y13=10x23=10y23=130;j>1;j--)
{
LineDDA1(x13 y13 x23 y23);
x13+=20;
x23+=20;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-09-11 15:48 2\
文件 3513 2018-09-11 15:48 2\main.cpp
文件 430774 2018-09-11 15:48 2\main.o
文件 1358 2018-09-12 10:57 2\Makefile.win
文件 944 2018-09-04 12:07 2\Project1.dev
文件 460853 2018-09-11 15:48 2\Project1.exe
文件 111 2018-09-12 10:57 2\Project1.layout
文件 908 2018-09-04 11:19 2\项目1.dev
文件 461365 2018-09-11 15:31 2\项目1.exe
文件 111 2018-09-11 16:37 2\项目1.layout
- 上一篇:FFT Verilog代码
- 下一篇:常用电容封装,带3D,钽电容封装
相关资源
- Macromedia Fireworks V8.0 简体中文版
- 超级场景清理器(SPCleaner)v1.0免费版
- FMEDesktop2019特别版forMacv2019.0.0.0.19181苹
- BricsysBricsCadPlatiniumv17.2.12.1Linux64位免费
- 断崖水刀工具箱 v5.1.zip
- 燕秀工具箱 v2.81.zip
- 营业执照自编自导v6.0官方免费绿色版
- 万彩动画大师v2.5.6最新特别版64位
- AxGlyph(矢量图绘制软件)v12.25免费安
- OpenGL 火箭
- H-JPGRecovery超强jpg照片恢复软件v2.0中文
- 匀光匀色软件(ModifyUI)V20181105绿色免
- Foto-Mosaik-Edda(马赛克拼图制作软件)
- Img2Ozf(Ozi地图转换工具)v3.20官方安
- 图片视频转文本TXT字符图像(技术宅
- topaz滤镜64位中文版2017整合版Photosho
- ImageConverter(万能图片转换器)2009免
- 任意形状抠图
- glut库glew库glfw库glaux库
- OpenGL配置文件
- Graphics Gems图形图像编程精粹所有源代
- OPENGL中的GLUT源代码
- OpenGL库(包括glewfreeglut和gltools)
- freeglut,包括.dll、.h和.lib文件,完美
- opengl库文件
- glut库源码
- 微信支付宝万能交易截图神器v1.0免费
- gcluto_1_0.exe
- OpenGL 的 glut glaux
- 史上最全OpenGL库文件
评论
共有 条评论