// Bresenham绘制粗线.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <GL/glut.h>
#include <cmath>
void init(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 200.0, 0.0, 200.0);
}
void lineBres(int x0, int y0, int xEnd, int yEnd, int width)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.5, 0.5);
glEnable(GL_POINT_SMOOTH);
int dx = fabs(xEnd - x0), dy = fabs(yEnd - y0);
int p = 2 * dy - dx;
int q = 2 * dx - dy;
int twoDy = 2 * dy, twoDyMinusDx = 2 * (dy - dx);
int twoDx = 2 * dx, twoDxMinusDy = 2 * (dx - dy);
int x=x0, y=y0;
glBegin(GL_POINTS);
glVertex2i(x, y);
glEnd();
int minWidth, maxWidth;
width--;
if (width % 2 == 0)
{
minWidth = -width / 2;
maxWidth = width / 2;
}
else
{
minWidth = -width / 2 - 1;
maxWidth = width / 2;
}
if (fabs(dx) > fabs(dy))
{
while(x<xEnd)
{
x++;
if(p<0)
p += twoDy;
else
{
y++;
p += twoDyMinusDx;
}
glBegin(GL_POINTS);
for (int i = minWidth; i <= maxWidth; i++)
glVertex2i(x, y + i);
glEnd();
}
}
else
{
while (y < yEnd)
{
y++;
if (q < 0)
q += twoDx;
else
{
x++;
q += twoDxMinusDy;
}
glBegin(GL_POINTS);
for (int i = minWidth; i <= maxWidth; i++)
glVertex2i(x + i, y);
glEnd();
}
}
glFlush();
}
void pointFun()
{
int x0 = 0, y0 = 0, xEnd = 100, yEnd = 200, width = 5;
lineBres(x0, y0, xEnd, yEnd, width);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(0, 0);
glutInitWindowSize(400, 400);
glutCreateWindow("An Example OpenGL Program");
init();
glutDisplayFunc(pointFun);
glutMainLoop();
return 0;
}
Bresenham绘制粗线.zip_Bresenham
版权申诉
64 浏览量
2022-09-25
00:00:03
上传
评论
收藏 13.71MB ZIP 举报
APei
- 粉丝: 64
- 资源: 1万+
最新资源
- HTML+CSS制作的个人博客网页.zip
- IMG_20240521_094903.jpg
- 基于htmlde 爱心代码,但HTML网页源码.zip
- 51单片机实现LED流水灯
- 基于Python的obEspoir分布式游戏框架设计源码
- 基于python的机械设计实用计算器,可计算电动机,传动装置,V带轮,齿轮,轴,轴承的几何或者力,运动学参数数值+源码+开发文档
- 基于HTML +JavaScript的元旦倒计时代码.docx
- 【Unity资源免费分享】孩子益智小游戏unity 5x系列Baby Doll House Cleaning
- 【资源免费分享】集市游戏(uniyt案例)
- 数据整理结果 2023-12-7 192544 6.dta
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈