This commit is contained in:
sloop
2016-05-20 01:32:56 +08:00
parent 592762d131
commit 7c3ae84d9e

View File

@@ -84,7 +84,21 @@ rXxx方法 | rMoveTo, rLineTo, rQuadTo, rCubicTo | **不带r的方法是基于
奇偶规则 | 奇数表示在图形内,偶数表示在图形外 | 从任意位置p作一条射线 若与该射线相交的图形边的数目为奇数则p是图形内部点否则是外部点。 奇偶规则 | 奇数表示在图形内,偶数表示在图形外 | 从任意位置p作一条射线 若与该射线相交的图形边的数目为奇数则p是图形内部点否则是外部点。
非零环绕数规则 | 若环绕数为0表示在图形内非零表示在图形外 | 首先使图形的边变为矢量。将环绕数初始化为零。再从任意位置p作一条射线。当从p点沿射线方向移动时对在每个方向上穿过射线的边计数每当图形的边从右到左穿过射线时环绕数加1从左到右时环绕数减1。处理完图形的所有相关边之后若环绕数为非零则p为内部点否则p是外部点。 非零环绕数规则 | 若环绕数为0表示在图形内非零表示在图形外 | 首先使图形的边变为矢量。将环绕数初始化为零。再从任意位置p作一条射线。当从p点沿射线方向移动时对在每个方向上穿过射线的边计数每当图形的边从右到左穿过射线时环绕数加1从左到右时环绕数减1。处理完图形的所有相关边之后若环绕数为非零则p为内部点否则p是外部点。
接下来我们先了解一下两种判断方法是如何工作的。
#### 奇偶规则
这一个比较简单,也容易理解,直接用一个简单示例来说明。
![](http://ww4.sinaimg.cn/large/005Xtdi2jw1f417d963qxj308c0dwq33.jpg)
在上图中有一个四边形,我们选取了三个点来判断这些点是否在图形内部。
```
P1: 从P1发出一条射线发现图形与该射线相交边数为0偶数故P1点在图形外部。
P2: 从P2发出一条射线发现图形与该射线相交边数为1奇数故P2点在图形内部。
P3: 从P3发出一条射线发现图形与该射线相交边数为2偶数故P3点在图形外部。
```