计算机图形学——多边形填色(多边形颜色渐变填充)

1.问题描述与算法思想

  1. 问题描述

多边形颜色渐变填充,设计实现多边形的填充类,设置顶点序列,调用填充函数。通过建立多边形的桶表和边表的数据,按照算法步骤依次扫描填充。调用设计实现的多边形填充类,对所绘制出来的多边形进行颜色渐变填充。

  1. 算法思想
  1. 有效边表填充算法原理
       在多边形填充过程中,常采用:“下闭上开”和“左闭右开”的原则对边界像素进行处理。有效边表填充算法通过维护“桶表和边表”数据,节省了有效数据存储空间,避免了扫描线与多边形所有边求交的运算耗时。“桶表”是按照扫描线顺序管理边的出现情况的一个数据结构,每个结点对一条扫描线。将每条边的“边表”链入与该边最小y坐标(ymin)相对应的桶处,边表结点的数据结构如图下所示:

x|ymin

ymax

1/k

next

有效边表填充算法的实现步骤为:

1.根据多边形的顶点序列,建立其“桶表和边表”数据。
    b) 按照扫描线从小到大的移动顺序,取出当前扫描线对应桶的边       表数据。
    c) 如果“桶表”数据已经取完,则填充结束;否则,继续后续填       充操作。
    d) 将当前桶里的边表数据加入到有效边表,根据“下闭上开”的       原则,删除已经到ymax的无效边;
    e) 对当前扫描线的有效边表按x值递增的顺序进行排序、配对,       以确定填充区间;根据“左闭右开”的原则,对两两配对的填         充空间进行像素填充。
    f) 继续回到步骤b。

  1. 颜色渐变填充原理

颜色渐变填充原理可以通过双线性插值的方法的以实现,具体的实现公式如下所示:

 

  1. 边AC上的D点的渐变色为:

CD=yD-yCyA-yCCA+yA-yDyA-yCCc

  1. 边BC上的E点的渐变色为:

CE=yE-yCyA-yCCB+yA-yEyA-yCCc

  1. 边DE上的F点的渐变色为:

CF=xF-xExD-xECD+xD-xFxD-xECE

2.详细设计

1.首先声明二维点类“CP2”、边表类“CAET”和桶表类“CBucket”,用于       存储和传递多边形“桶表和边表”数据。多边形填充类中主要包括存放       多边形顶点数

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值