资源简介
该资源包主要包含了在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,钽电容封装
相关资源
- GlutLib.zip
- 计算机图形图像技术复习参考题
- glut文件包
- 配置OpenGL以及glaux所需资源.h.dll
- OpenGL 库glut读取obj文件并使用显示列表
- glut环境工具包
- FreeGlut
- GLUT库(glut.h、glut32.dll、glut32.lib)
- glut.dll和glut32.dll
- opengl头文件和库glut工具包
- opengl 头文件 GLut.h,GLU32.h,glut32.h,
- freeglut-3.0.0.
- 通用扫描线填充算法OpenGL glut实现
- 泛滥填充种子填充算法OpenGl glut实现
- vs配置opengl所需glut库
- glut工具包
- GLTools-Freeglut.zipopengl超级宝典V5
- GLUT库下载69016
- GLUT/GL/gl工具包
- opengl的glut最全包
- glut工具包,解决编译问题: 无法打
- glut 各种库
- glut库
- surfer12v12.2.705汉化特别版(附注册机汉
- Autodesk2019全系列注册机X-FORCE免费绿色
- OpenGL安装包最完全
- GenArtsSapphire蓝宝石插件v10官方中文版
- OpenGL安装包全
- 百度地图切图工具V1.0.1免费绿色版
- ArtiosCAD14中文官方免费版(附破解补丁
评论
共有 条评论