关闭

Alternate Winding

103人阅读 评论(0) 收藏 举报
分类:

见<<windows程序设计>> 第五版 Charles Petzold,P139

刚看时,有点摸不着头脑.网上搜索看了些前辈的解释.


回头再看书本,发现其实Petzold大牛把这个问题解释简单明了,为何第一次看的时候居然入不了脑子?


完全按照书上写的来解释,如下:


1 Alternate 模式:  奇数填充,偶数不填充.

       从一封闭区域内一个点画条射线到无穷远处, 碰到奇数条边 则填充点所在的区域; 碰到偶数条边则不填充

     下图左边是alternate 模式,区域4和5就不填充,他们碰到的边数是2,是偶数,因此不填充.


2. Winding模式:  奇数填充,偶数看情况(一个内部计数器counter非零则填充,counter=0则不填充)

            下图右边是winding模:

           很显然,1,2,3区域内找个点画条射线穿出整个图形,碰到的边的个数为1,是是奇数,因此填充.

          对于,4,5这2个区域,射线出来的时候,碰到的边数是偶数,就要看计数器counter是否为非零了.

         以4来说: 开始counter=0,碰到第一个边是向左的,counter++;碰到第二条边是向右的,与第一个边反向,count--; 最终counter = 0,因此不填充.

        以5来说,开始counter=0,碰到第一个边是向左,counter++; 碰到第二个边还是同向,counter++;最终counter=2,故填充


//  把碰到的第一个边作为count方向,后面的与它同向就++,反向就-- 






其他解释参数如下:



http://bbs.csdn.net/topics/40019151

http://loveljc2000.blog.163.com/blog/static/1896335182011526012494/

http://blog.csdn.net/sun_shine_/article/details/6448947

http://blog.csdn.net/goki123/article/details/5216303

http://msdn.microsoft.com/en-us/library/windows/desktop/dd145080(v=vs.85).aspx

http://comments.gmane.org/gmane.comp.lib.cairo/23250

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:29180次
    • 积分:445
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:93篇
    • 译文:0篇
    • 评论:0条
    文章分类