3D图形关于bresenham算法原理

我写这个自己看的,毕竟本人实在是个菜,而且很笨,

在现实世界中画一条直线 它是连续的,而计算机的世界里都是离散的,计算机不可能使用实数,这个算法刚开始一直看不懂,主要是因为我对计算机中的像素概念和

计算机在屏幕上到底是怎么画直线的方式不知道,后来在网上找到了点图片,根据图片我猜了一点下面自己的想法

下图是我在网上随便找的一个图,蓝点部分为实际世界中的直线,而图中每个水平线和竖直线的交点就为计算机在屏幕上每个像素的中心坐标,

计算机只能在这些像素的中心点上绘制像素(本人就按照自己的理解说些很不专业的话,因我自己也不太懂),

假设开始的点位(xi,yi) ,这个时候就要判断该点的 yi是否大于中点,即图中的红色的很短的线段表示的那个店,如果小于,就在下面的那个像素点上画,如果大于

就在上面的像素点画。  大概就这么个意思吧。。具体代码怎么写 还没研究。。



下面的是我copy别人的。。主要是给自己看。。。我的语言表达能力太差。。

本人刚学编程。

基本上Bresenham画线算法的思路如下:

// 假设该线段位于第一象限内且斜率大于0小于1,设起点为(x1,y1),终点为(x2,y2).
// 根据对称性,可推导至全象限内的线段.
1.画起点(x1,y1).
2.准备画下个点。x坐标增1,判断如果达到终点,则完成。否则,由图中可知,下个要画的点要么为当前点的右邻接点,要么是当前点的右上邻接点.
2.1.如果线段ax+by+c=0与x=x1+1的交点的y坐标大于M点的y坐标的话,下个点为U(x1+1,y1+1)
2.2.否则,下个点为B(x1+1,y1)
3.画点(U或者B).
4.跳回第2步.
5.结束.









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值