直线、圆、椭圆的bresenham算法

此为华中科技大学图形学学习笔记

有一些是共同的点,首先都是要确定最大位移方向是x还是y。这个最大位移方向可以理解为截取一定长的片段是x方向变化大还是y方向变化大。直线可以用斜率判断,圆的话将其分作八个部分。第一象限为例,位于y=x上方的最大位移方向是x,y=x下方的最大位移方向是y。椭圆的话也是要将每个象限分为两个部分,两个部分的最大位移方向不一样。

为什么要确定最大位移方向?因为如果不知道最大位移方向,比如x的位移方向小于y,画图的时候是依据x来步进画点,那么有可能出现一种情况就是x每前进一个单位,y会前进很多单位,导致画出的图像有的地方粗有的地方细。确定了最大位移方向后,每次沿着这个位移方向前进一个单位,那么另一个方向只有两种可能,要么不变,要么也前进一个方向。

如何判断这两种可能谁会发生?用到的方法一般是中点法

在这里插入图片描述
比如这里以椭圆为例,得到椭圆的几何函数,从点pi步进一个单位后,是取pu还是pd呢,一个简单的方法就是取他们俩的中点,带入椭圆方程,看这个终点在圆内,园外还是圆上。圆内的话就说明pu离椭圆近,以此类推。可以找到每次离椭圆最近的选择

知道了判断方法后,如果每次都带到圆方程作判断效率会很低,就考虑用递推项算出d。分当前点取pu、pd两种情况,进一步将下一个递推项的中点带入方程,算出d的大小

以椭圆的第二种情况为例:
在这里插入图片描述

除此之外,确认初值,就基本可以得到bresenham算法的流程。以下是椭圆的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值