标签:img html com table 顺序 htm 数据 int 图形
本文主要讨论点阵表示
其实主要是PPT的copy,但是复制一遍确实印象深刻一点??
即一个个点判断是不是属于图形内部,主要方法是射线法。
从待判断点发出射线,设与多边形交点个数为\(k\)
特殊情况:
判断点的实现代码(ACM):https://www.cnblogs.com/muyefeiwu/p/11260366.html
这个算法的特点是复杂度高
改进:利用内部点的连续性
(1)边的连贯性(Edge Coherence)—优化交点计算
某条边与当前扫描线相交,也可能与下一条扫描线相交
如\(L_1\)与边AE和AB相交,下条扫描线\(L_2\)也与边AE和AB相交。
(2)扫描线的连贯性(Scan-line Coherence) )—优化交点排序
当前扫描线与各边的交点顺序与 下一条扫描线与各边的交点 顺序可能相同或类似
如点1,2的次序与点3,4的次序
(3)区间的连贯性(Span Coherence)
同一区间上的像素取同一颜色属性
如点3和点4之间的线段
由扫描线\(y=e\)与多边形的交点递推计算扫描线 \(y=e+1\)的交点
第一类交点:位于同一条边上的后继交点—如\(I_0,I_2,I_4\) : $x’=x+\frac{1}{m} $
第二类交点:边与扫描线的第一个交点—如\(I_3 , I_1\) : 就是边的下端点
一、边的分类表\(ET\)(Edge Table)
struct ET{
int ymax; //边的上端点的y坐标值
float x; //边的下端点的x坐标
float deltax; //边的斜率的倒数
ET *nextEdge; //下一条边的指针
}edga[N]; //每条扫描线对应一条链表
其中edga[0],edga[2],edga[3],edga[6],edga[8]
因为没有与边的下端点相交,所以为空
数据结构对应相关方法:
deltax
:用于递推计算交点$x’=x+\frac{1}{m} $ymax
: 当扫描线 y = e + 1 == ymax
,说明下 一条扫描线与此边不相交。二、活性边表\(AEL\)(Active Edge List)
结构定义与\(ET\)表是一样的
x
的含义不一样:当前扫描线与边的交点的\(x\)坐标
作用:存储与当前扫描线的交点,同时快速计算下一条扫描线与多边形相交的点,且可判断边是否与下一条扫描线相交
实例
在\(Y=7\)的时候\(ET\)表不为空,所以就将\(ET\)表中的边插入到\(AEL\)表中
p++
标签:img html com table 顺序 htm 数据 int 图形
原文地址:https://www.cnblogs.com/smallocean/p/12449768.html