圆弧和椭圆的扫描转换算法

圆弧的扫描转换算法

  • 处理对象:圆心在原点、半径为R的圆
  • 圆的八对称性:
    圆的八对称性

一、 直接算法

两种直接离散方法:

  • 利用隐函数方程: x 2 + y 2 = R 2 x^2 + y^2 = R^2 x2+y2=R2
    ( x i , y i = R 2 − x i 2 ) 取 整 > ( x i , y i , r ) (x_i, y_i = \sqrt{R^2 - x_i^2}) \frac{取整}{}>(x_i, y_{i,r}) (xi,yi=R2xi2 )>(xi,yi,r)
  • 利用参数方程: { x = R cos ⁡ θ y = R sin ⁡ θ \begin{cases}x = R\cos{\theta} \\ y = R\sin{\theta} \end{cases} { x=Rcosθy=Rsinθ

这两种方法都不可取,因为分别用到了开根运算、三角函数运算、浮点运算、取整等,计算量大,效率不高,不均匀。

二、角度DDA算法

由圆的参数方程:
{ x = R cos ⁡ θ y = R sin ⁡ θ \begin{cases} x = R\cos{\theta} \\ y = R\sin{\theta} \end{cases} { x=Rcosθy=Rsinθ
取微分:
{ d x = − R sin ⁡ θ d θ d y = R cos ⁡ θ d θ ⇒ { d x = − y d θ d y = x d θ \begin{cases} dx = -R\sin{\theta}d\theta \\ dy = R\cos{\theta}d\theta \end{cases} \Rightarrow \begin{cases} dx = -yd\theta \\ dy = xd\theta \end{cases} { dx=Rsinθdθdy=Rcosθdθ{ dx=ydθdy=xdθ
在这里插入图片描述

三、中点算法

利用圆的对称性,只须讨论 1 8 \frac{1}{8} 81圆。考虑第一象限内 x ∈ [ 0 , R 2 ] x \in[0, \frac{R}{\sqrt{2}}] x[0,2 R]的圆弧:
在这里插入图片描述
P ( x p , y p ) P(x_p,y_p) P(xp,yp)为当前点亮像素,那么下一个点亮的像素可能是 P 1 ( x p + 1 , y p ) P_1(x_p+1, y_p) P1(xp+1,yp) P 2 ( x p + 1 , y p − 1 ) P_2(x_p + 1, y_p - 1) P2(xp+1,yp1)

  • M M M P 1 、
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值