《计算机图形学基础》OpenGL中点画线法画直线(同时支持k<1和k>1的情况)

发布时间:2021-12-02 12:55:16

2019独角兽企业重金招聘Python工程师标准>>>



通过中点画线法画出坐标原点在左下角的直线,支持要求各种斜率:


《计算机图形学基础》这本书上的中点画线算法只列出了k<1的情况,然后下边是补充的k>1的情况(前提是k>=0)


#include
#include
#include

int xs,ys,xe,ye;

void MidpointLine(int x0,int y0,int x1,int y1)
{
if((x0!=x1)&&(y0!=y1))
{
int a,b,delta1,delta2,d,x,y;
float k=(float)(y1-y0)/(float)(x1-x0);
if(k>=0&&k<=1)
{
a=y0-y1;
b=x1-x0;
d=2*a+b;
delta1=2*a;
delta2=2*(a+b);
x=x0;
y=y0;
glVertex2i(x,y);
while(x {
if(d<0)
{
x++;
y++;
d+=delta2;
}
else
{
x++;
d+=delta1;
}
glVertex2i(x,y);
}
}
else //if(k>1)
{
a=y0-y1;
b=x1-x0;
d=a+2*b;
delta1=2*(a+b);
delta2=2*b;
x=x0;
y=y0;
glVertex2i(x,y);
while(y {
if(d<0)
{
y++;
d+=delta2;
}
else
{
y++;
x++;
d+=delta1;
}
glVertex2i(x,y);
}
}
}
else
{
int min,d;
if(x0==x1)
{
int x=x0,y;
y=(y0<=y1)?y0:y1;
d=fabs((double)(y0-y1));
while(d>=0)
{
glVertex2i(x,y);
y++;
d--;
}
}
if(y0==y1)
{
int x,y=y0;
x=(x0<=x1)?x0:x1;
d=fabs((double)(x0-x1));
while(d>=0)
{
glVertex2i(x,y);
x++;
d--;
}
}
}
}

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 main(int argc,char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
printf("输入线段的起点和终点坐标");
scanf("%d,%d,%d,%d",&xs,&ys,&xe,&ye);
glutInitWindowPosition(50,100);
glutInitWindowSize(500,500);
glutCreateWindow("终点画线法");
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,500.0,0.0,500.0);
glutDisplayFunc(lineSegment);
glutMainLoop();
}

?








转载于:https://my.oschina.net/finchxu/blog/1573057






相关资源:OpenGL通过中点绘制直线和圆

相关文档

  • 小学必会文学常识
  • Ubuntu1604搭建IPFS私有网络
  • 手机听筒有细微电流声
  • 小学读三字经心得体会
  • 捏橡皮泥作文
  • 幼儿园教师个人的学习计划
  • 有关于长征80周年的手抄报
  • 前端入门系列之HTML
  • HDUOJ PIE二分查找
  • 公元2002年是属什么年的
  • 手机蓝牙播放音乐卡顿
  • 01-复杂度3 二分查找 (20 分)
  • 揭秘女人在婚姻中的盲区
  • 建房协议书范本
  • 特殊学生辅导计划与措施
  • git------git remote 查看操作远程分支
  • Apache Kafka的架构以及使用
  • 我们班的特色男生
  • 办公室装修壁画
  • 北师大版小学一年级数学教学设计
  • 学习经验交流网精选多篇
  • 陆游的爱国诗之《病起书怀》
  • 打破自身瓶颈从文字堆里翻身的培训心得
  • 外婆-初中写人作文1000字
  • 系统:WSL(win10的子系统Linux)
  • 日本娱乐巨头DMM成立加密货币挖矿专业实验室
  • 关于渤海镇旅游发展情况的思考
  • 云竹叶子发黄怎么办
  • 2020年新年短信大全
  • 爱国小报边框图片大全简洁好看
  • 猜你喜欢

  • 【最新】高中物理第1章电磁感应与现代生活章末综合测评沪科版选修3 2
  • 【2019年整理】第五章标准件与常用件化工用
  • (小学教育)2019年(春)五年级美术下册 第19课《昨天、今天和明天》教案 人美版
  • 优秀学生干部申请书范文
  • (完整word版)灭火器的认识及使用教案(word文档良心出品)
  • 防火门项目可行性研究报告(可编辑)
  • 中国移动邀用户共论信息化
  • 生活养生-脚上大拇指指甲黑紫是什么原因
  • 《窗边的小豆豆》读后感800字作文_1
  • 手机开机呼叫流程
  • 毛笔书法基础知识讲座及书法常识ppt课件
  • 2019精选教育中枢神经系统药物麻醉药镇静催眠药抗癫痫抗惊厥药.ppt
  • 浮球式惯性*台连续翻滚自标定自对准方法
  • mysql 全面知识点_Mysql知识点整理
  • (三起)冀教版四年级英语上册Unit1_Lesson5练*题(有答案)【精品】
  • 人教版小学二年级语文清澈的湖水1(中学课件201909)
  • 厨房美食菜谱:卤猪蹄的做法_1
  • 创先争优活动简报
  • html5之div居中
  • (通用版)2018年八年级物理上册 第五章 透镜及其应用检测试卷习题课件 (新版)新人教版
  • 血液一般检测 PPT课件
  • 五水共治我心中的小河作文800字小学生作文
  • 社区踢踏舞班年终工作总结
  • 大庆电子信息项目申请报告
  • 2012人力资源管理师二级考试复*提纲
  • 【知识学*】《党委会的工作方法》学*体会:需“做”出实效
  • 最新版湖南省益阳市高一下学期高一期末考试 数学 Word版含答案
  • 广东省湛江市普通高中2017-2018学年高一语文10月月考试题07
  • 高二化学上学期期中-保山四中2014-2015学年高二上学期期中考试化学试题及答案
  • 分层教学法在高中数学课堂中的应用研究
  • git clean 小结
  • 名词性从句that与what(共16张PPT)
  • 北师大小学语文四年级下《十二 回归:七子之歌》 优质课课件_2
  • 阿里云服务器购买教程(新手指南)
  • 年平均增长速度怎么算
  • 分布式系统中的限流与熔断
  • 纪念我们将要过期的青春
  • 国际环境法.ppt
  • Spring aop配置需要配置在springmvc的配置文件上,不然会失效
  • R-AD-031补签卡申请单
  • 小学语文苏教版二年级上册识字7教学设计
  • 实现配电网馈线自动化的方式及应用
  • 电脑版