Canvas非零环绕原则
非零环绕原则
概述
非零环绕原则描述了一种计算机该如何给封闭图形上色的规则,非常简单,我们只需要记住一个下面一条规则就行。
给封闭图形设置一个渲染方向(假如你的图形是一笔成画的),比如顺时针,那么与之相反的逆时针就是反方向。根据线条的方向来按照下列规则判断:
- 从封闭图形画一条射线,如果与之相交的线条中正向和逆向不等(正多逆少或者逆多正少,只要不是0即可),那么就认为图形内部;
- 从封闭图形画一条射线,如果与之相交的线条中正向和逆向相等(例如圆环,一正一逆,正好抵消为0),那么就认为图形外部;
这就是“非零环绕原则”。这样说还不直观,我们可以用一个例子来说明这个。
圆环
接着之前的代码片段,我们来画一个圆环:
1 |
|
按照“非零环绕”原则,内部圆的方向是顺时针,外部圆的方向是逆时针,正好两个圆的中间部分才是需要填充的部分。这样就完成了一个圆环。是不是非常简单。
镂空图形绘制
我们再做一个复杂一些的图形,你可以将其拷贝到浏览器中看效果:
1 |
|
结束
就这些
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!