博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
X-扫描线算法
阅读量:6481 次
发布时间:2019-06-23

本文共 862 字,大约阅读时间需要 2 分钟。

多边形的扫描转换

多边形有两种重要的表示方法:顶点表示和点阵表示

 

顶点表示是用多边形的顶点序列来表示多边形。这种表示直观、几何意义强、占内存少,易于进行几何变换。

但由于它没有明确指出哪些象素在多边形内,故不能直接用于面着色

点阵表示是用位于多边形内的象素集合来刻画多边形。这种表示丢失了许多几何信息(如边界、顶点等),但它却是光栅显示系统显示时所需的表示形式。

光栅图形的一个基本问题是把多边形的顶点表示转换为点阵表示。这种转换称为多边形的扫描转换

 

X-扫描线算法

X-扫描线算法填充多边形的基本思想是按扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的像素,即完成填充工作

 

算法的核心是按X递增顺序排列交点的X坐标序列。由此,可得到X-扫描线算法步骤如下:

(1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax)

 

(2)从y = ymin到y = ymax,每次用一条扫描线进行填充

 

(3) 对一条扫描线填充的过 程可分为四个步骤:

a、求交:计算扫描线与多边形各边的交点

b、排序:把所有交点按递增顺序进行排序

c、交点配对:第一个与第二个,第三个与第四个

d、区间填色:把这些相交区间内的像素置成不同于背景色的填充色

当扫描线与多边形顶点相交时,交点的取舍问题(交点的个数应保证为偶数个)

 

(1)若共享顶点的两条边分别落在扫描线的两边,交点只算一个

(2)若共享顶点的两条边在扫描线的同一边,这时交点作为零个或两个

检查共享顶点的两条边的另外两个端点的y值,按这两 个y值中大于交点y值的个数来决定交点数

存在的问题

为了计算每条扫描线与多边形各边的交点,最简单的方法是把多边形的所有边放在一个表中。在处理每条扫描线时,按顺序从表中取出所有的边,分别与扫描线求交

这个算法效率低,为什么?

关键问题是求交!
而求交是很可怕的,求交的计算量是非常大的

转载于:https://www.cnblogs.com/cnblog-wuran/p/9700334.html

你可能感兴趣的文章
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
in-list expansion
查看>>
设计原则(四):接口隔离原则
查看>>
基于react的滑动图片验证码组件
查看>>
【学习笔记】阿里云Centos7.4下配置Nginx
查看>>
VuePress手把手一小時快速踩坑
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映
查看>>
生活杂事--度过十一中秋
查看>>
Pyrex也许是一个好东西
查看>>
WINFORM WPF字体颜色相互转换
查看>>