• <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)論
              
            无码国内精品久久综合88| 国产精品VIDEOSSEX久久发布| 色综合久久夜色精品国产| 久久国产精品视频| 欧美久久久久久| 中文字幕人妻色偷偷久久| 亚洲成人精品久久| 中文字幕精品久久| 久久精品国产精品国产精品污| 久久国产精品国语对白| 欧美精品久久久久久久自慰| 91精品国产高清久久久久久国产嫩草| 亚洲国产综合久久天堂| 香蕉久久一区二区不卡无毒影院| 亚洲国产成人久久综合野外| 久久本道伊人久久| 综合人妻久久一区二区精品| 理论片午午伦夜理片久久| 精品久久久久久国产| 一本久久a久久精品亚洲| 亚洲欧美精品一区久久中文字幕| 国内精品久久久久久野外| 伊人久久大香线蕉综合Av| 四虎国产精品免费久久| 国产成人99久久亚洲综合精品| 精品久久久久久久久午夜福利| 精品久久久久久国产| 午夜视频久久久久一区 | 狠狠色伊人久久精品综合网| 亚洲精品乱码久久久久久蜜桃不卡| 久久强奷乱码老熟女| 国产免费久久精品99久久| 国产AV影片久久久久久| 国产99久久久久久免费看| 中文字幕成人精品久久不卡| 国内精品久久久久影院日本| 久久99国产综合精品免费| 久久亚洲AV成人出白浆无码国产| 亚洲av成人无码久久精品| 欧美喷潮久久久XXXXx| 国产成人久久精品区一区二区|