【计算机图形】画直线与画圆

由于计算机的分辨率有限,计算机图形只是看起来平滑,放大后就能看到阶梯状的锯齿。(可以打开windows画图检验)。所以画线画圆的本质问题就是下一个点取(x + 1, y )或(x, y + 1)还是(x + 1, y + 1)?

一、画直线:
1. DDA(Digital Differential Analyzer)公式法:这里写图片描述

这里写图片描述

DDA是一种基于直线的微分方程来生成直线的方法。
如果△X>=△Y,则步进X方向;反之则步进Y方向。
2. 中点画线法:
这里写图片描述
设线段P1P2的中点M(x + 1,y + 0.5),Q是线段P1P2与直线的实际交点。将M代入直线公式则其结果d为MQ距离。
d=F(M)=F(x + 1, y + 0.5)=a(x + 1) + b(y + 0.5) + c

比较M与Q的位置d:
若d > 0,M在Q上(或右)方,则P1离直线更近,取P1;
若d < 0,M在Q下(或左)方,则P2离直线更近,取P2;
若d = 0,M与Q重合,则任取。

3.Bresenham画线法:
这里写图片描述

将下个坐标点的x坐标 (x + 1) 带入直线方程,比较得到的y值与(y +( y + 1)) / 2 的大小。如果大于,则取(x + 1, y + 1);反之则取(x + 1, y)。

实际还是比较中点,即d = F(x + 1) - F(y + 0.5)
如果 d > 0, 取(x + 1, y + 1);
反之 d < 0, 取(x + 1, y);
相等则任取。

二、画圆:由于圆具有八对称性,所以只要画八分之一,剩下的可由对称性得到。

1.中点画圆法:
这里写图片描述

构造判别函数:F(x, y) = x^2 + y^2 – R^2
设线段P1P2的中点M(x + 1, y – 0.5),Q为直线与线段P1P2的交点。将M代入直线公式则其结果d为MQ的距离。
d = F(M) = F(x + 1, y – 0.5):
若d = F(x, y) = 0,表示M在圆上,取任意一点;
若d = F(x, y) > 0,表示M在圆外,取P2;
若d = F(x, y) < 0,表示M在圆内,取P1。

2.Bresenham法(改进的中点画圆法):
从中点画圆法可以看出,我们只关心d的正负性,不管大小,而中点画圆法中还有浮点运算等低效算式。因此在不影响d的正负性的前提下改进即是Bresenham法,所以其本质仍是“中点画圆法”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值