• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-341  評(píng)論-2670  文章-0  trackbacks-0

                首先吐槽一下:今天考IT項(xiàng)目管理,100道選擇題。前幾天考配置管理,10道大題。如今的老師都喜歡走極端……

                這個(gè)方法是在考完試回宿舍的路上想到的,適用于2D與3D。主要想法是這樣的。給定兩個(gè)幾何圖形A、B,把A和B都分成『內(nèi)『、『外』兩部分。A的『內(nèi)』就是處于B內(nèi)部的部分。于是A和B就變成了A內(nèi)、A外、B內(nèi)、B外。然后就有如下公式:
                ·A and B=A外+B外
                ·A sub B=A外+B內(nèi)
                ·A or B=A內(nèi)+B內(nèi)
                ·A xor B=A外+B外+A內(nèi)+B內(nèi)
                這種數(shù)據(jù)結(jié)構(gòu)是為了滿足如下算法:一個(gè)A點(diǎn)在圖形內(nèi)<==>過(guò)這個(gè)點(diǎn)的直線交圖形與點(diǎn)集P,其中|{Pi|Pi<=A}|和|{Pi|Pi>=A}|都是奇數(shù)。注意我們使用的是<=和>=,這樣的話兩個(gè)集合的數(shù)量的奇偶性都是一致的。這個(gè)算法無(wú)論2D、3D多邊形還是3D多面體都能適用,就算是這個(gè)圖形有孔(鑲嵌)也可以,而且跟凹凸體無(wú)關(guān)。這個(gè)算法只有一種情況是不能用的:就是自己跟自己有交叉,譬如我們習(xí)慣的5條直線構(gòu)成五角星的畫(huà)法。這樣的話首先要對(duì)這個(gè)圖形進(jìn)行處理,成為鑲嵌的圖形。

                讓我們來(lái)圖示一下。現(xiàn)在我們給出兩個(gè)回形的紅色和藍(lán)色向前多邊形:

                然后我們把兩個(gè)圖形分為內(nèi)外一共四部分,其中內(nèi)使用粗線:

               
                我們把這個(gè)圖形轉(zhuǎn)換成拓?fù)浣Y(jié)構(gòu),得到了下面的連線圖。現(xiàn)在讓我們來(lái)求藍(lán) sub 紅,也就是藍(lán)外+紅內(nèi):

                我們可以很容易地看到現(xiàn)在圖形分成了4各部分,因?yàn)橄旅娴耐負(fù)浣Y(jié)構(gòu)構(gòu)成的圖一共有4個(gè)連同體。

                后來(lái)我自己做過(guò)實(shí)驗(yàn),求藍(lán) And  紅的時(shí)候圖形會(huì)被分成6個(gè)連同體,其中有5個(gè)是鑲嵌的孔。但是哪個(gè)是孔在整個(gè)過(guò)程中并沒(méi)有關(guān)系。因?yàn)槲覀冎恍枰阉械腃omponent求出來(lái),內(nèi)Component就是Component內(nèi)的一點(diǎn)在另一個(gè)圖里,而且判斷是不是內(nèi)部點(diǎn)的算法已經(jīng)給出了。整個(gè)流程跟哪一個(gè)連同體是孔并沒(méi)有關(guān)系。而且在實(shí)際情況下,2D多邊形和3D多面體的渲染并不在乎哪個(gè)是孔,可以正確渲染出來(lái)。唯獨(dú)3D多邊形在乎。這種情況下再慢慢處理吧。而且判斷的算法也是差不多的。不過(guò)我似乎沒(méi)有見(jiàn)到3D多邊形的布爾運(yùn)算有什么常見(jiàn)的應(yīng)用。

                期末考過(guò)后就可以開(kāi)始寫(xiě)布爾運(yùn)算的代碼了。
            posted on 2008-06-16 19:20 陳梓瀚(vczh) 閱讀(4556) 評(píng)論(7)  編輯 收藏 引用 所屬分類: 2D

            評(píng)論:
            # re: 使用拓?fù)溥M(jìn)行幾何圖形布爾運(yùn)算 2008-06-16 20:03 | 長(zhǎng)江三峽
            比較高深
            學(xué)習(xí)一下  回復(fù)  更多評(píng)論
              
            # re: 使用拓?fù)溥M(jìn)行幾何圖形布爾運(yùn)算 2008-06-16 20:18 | 陳梓瀚(vczh)
            第二幅圖有點(diǎn)小bug,不過(guò)不改了,知道什么意思就好。紅色的細(xì)線應(yīng)該是DE和LM。  回復(fù)  更多評(píng)論
              
            # re: 使用拓?fù)溥M(jìn)行幾何圖形布爾運(yùn)算 2008-06-17 17:39 | 天蝎魚(yú)
            樓主,你的方法確實(shí)比較形象,從直觀計(jì)算來(lái)說(shuō),確實(shí)不錯(cuò),是做題的一種方法,但是我想不通一個(gè)東西,那就是求交點(diǎn),多邊形求交點(diǎn)的時(shí)候,這里面要找到所有的A~P的點(diǎn),需要多少代價(jià)?我的意思是,怎么去最小化找點(diǎn)劃分A外,A內(nèi),B外,B內(nèi)? 其實(shí)當(dāng)判斷出這四個(gè)部分的時(shí)候,布爾運(yùn)算已經(jīng)有結(jié)果了,那是很簡(jiǎn)單的。
            鑒于計(jì)算幾何的方法,應(yīng)該說(shuō)用DECL的結(jié)構(gòu)會(huì)比較合適,不知樓主打算如何構(gòu)造,。。。 等待解決中

            另,樓主說(shuō)的自相交的多邊形,其實(shí)可以在最早的時(shí)候做一個(gè)多邊形拆分,就可以解決,我們只關(guān)注無(wú)自相交的多邊形就好了吧?... ... 不知我的想法對(duì)不~  回復(fù)  更多評(píng)論
              
            # re: 使用拓?fù)溥M(jìn)行幾何圖形布爾運(yùn)算 2008-06-17 19:33 | 陳梓瀚(vczh)
            1:只能兩兩求交,不過(guò)這里有很多優(yōu)化的辦法。譬如AABB box啊,甚至以前還有一位做3D的朋友建議我用BSP不過(guò)我覺(jué)得太復(fù)雜還是算了。一種簡(jiǎn)單但是不是很快的辦法就是把交點(diǎn)插入原來(lái)的多邊形內(nèi)部,然后就可以把交點(diǎn)用index來(lái)表示了。不過(guò)代價(jià)是沒(méi)有辦法的,因?yàn)闊o(wú)論你是用什么布爾運(yùn)算的算法,所有交點(diǎn)始終都是要算出來(lái)的。不然你根本無(wú)法表示結(jié)果。

            2:所有的交點(diǎn)都獲得了以后,交點(diǎn)之間的polyline集合都是互相之間不想交的,隨便拿一個(gè)點(diǎn)或者線段的中點(diǎn)看看在不在另一個(gè)多邊形內(nèi)部就知道是內(nèi)還是外了。至于判斷一個(gè)點(diǎn)是否在多邊形內(nèi)部應(yīng)該會(huì)吧。

            到了這里就解決了問(wèn)題了。至于自相交的話的確是需要先拆分的,只不過(guò)在我自己的實(shí)際需要中不需要處理自相交的部分,所以我就沒(méi)考慮怎么做了。  回復(fù)  更多評(píng)論
              
            # re: 使用拓?fù)溥M(jìn)行幾何圖形布爾運(yùn)算 2008-08-04 18:34 | pgc
            大方向是正確的,不過(guò)有很多細(xì)節(jié)問(wèn)題沒(méi)有考慮。譬如誤差,共線,共面……,你做到那一步的時(shí)候就知道了。  回復(fù)  更多評(píng)論
              
            # re: 使用拓?fù)溥M(jìn)行幾何圖形布爾運(yùn)算 2010-06-02 21:44 | 林小堅(jiān)
            很多細(xì)節(jié)都沒(méi)有考慮,真正實(shí)現(xiàn)起來(lái)非常麻煩。你怎樣在窗口中顯示?用GDI還是OPENGL?棱邊不相交的多邊形中的凹多邊形也沒(méi)有現(xiàn)成的顯示函數(shù),必須轉(zhuǎn)化為多個(gè)凸多邊形或三角形。其中還要考慮誤差,如何判斷一個(gè)點(diǎn)是否在多邊形內(nèi)。如何把排除剩下的邊再組合成多邊形,都是非常難的過(guò)程。  回復(fù)  更多評(píng)論
              
            # re: 使用拓?fù)溥M(jìn)行幾何圖形布爾運(yùn)算 2010-06-02 22:10 | 陳梓瀚(vczh)
            @林小堅(jiān)
            只要我們有“鑲嵌多邊形”的概念,這些都不是問(wèn)題。如今的新顯卡都直接支持,不需要我自己做。  回復(fù)  更多評(píng)論
              
            久久婷婷色综合一区二区| 亚洲日本va午夜中文字幕久久| 亚洲人成无码网站久久99热国产 | 久久久久久综合网天天| 怡红院日本一道日本久久 | 久久99热这里只有精品国产| 亚洲AV日韩精品久久久久| 久久精品国产影库免费看| 久久激情亚洲精品无码?V| 一本色道久久88精品综合| 国产激情久久久久影院小草 | 国内精品久久久人妻中文字幕| 国产精品久久久久久搜索| 伊人色综合久久天天网| 久久精品视频免费| 亚洲精品tv久久久久久久久| 久久综合九色综合欧美狠狠| 精品伊人久久大线蕉色首页| 久久国产视频网| 久久精品国产亚洲AV香蕉| 亚洲国产精品综合久久一线| 久久香蕉综合色一综合色88| 色8久久人人97超碰香蕉987| 久久婷婷五月综合成人D啪| 久久亚洲国产欧洲精品一| 亚洲va久久久噜噜噜久久| 大伊人青草狠狠久久| 久久婷婷色综合一区二区| 欧美日韩中文字幕久久久不卡 | 免费一级欧美大片久久网| 国产欧美久久久精品| 色综合久久久久无码专区 | 嫩草影院久久国产精品| 亚洲欧洲日产国码无码久久99| 亚洲午夜福利精品久久| 日日狠狠久久偷偷色综合96蜜桃| 国产—久久香蕉国产线看观看| 欧美亚洲国产精品久久蜜芽 | 91麻豆精品国产91久久久久久| 国产精品一久久香蕉产线看| 久久福利青草精品资源站|