• <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>

            天行健 君子當(dāng)自強(qiáng)而不息

            幾何檢測(cè)(1)

            新建網(wǎng)頁(yè) 1

             

            2D隱式直線上的最近點(diǎn)

            考慮2D中的直線L,L由所有滿足p . n = d的點(diǎn)p組成。

            其中n是單位向量,我們的目標(biāo)是對(duì)任意點(diǎn)q,找出直線L上距q距離最短的點(diǎn)q',它是q投影到L上的結(jié)果。讓我們畫(huà)一條經(jīng)過(guò)q平行于L的輔助線M,如圖13.1所示。設(shè)nMdM分別為直線方程的法向量和d值。因?yàn)長(zhǎng)和M平行,所以它們的法向量相等:nM=n。又因?yàn)?/span>q在M上,所以dMq.n

            現(xiàn)在可以得知,M到L的有符號(hào)距離為:d - dm = d - q . n。這個(gè)距離顯然等于qq'之間的距離(如果結(jié)果只需要距離而不是q'的值,到這里可以停止計(jì)算了)。為了計(jì)算q',只需要將q沿n的方向位移一定距離(公式13.1):

            q' = q + (d - q . n)n

            公式13.1   計(jì)算2D隱式直線上的最近點(diǎn)

             

            參數(shù)射線上的最近點(diǎn)

            考慮在2D或3D中的參數(shù)射線R:p(t) = porg + td

            其中d是單位向量,參數(shù)t在0到L間變化,L是R的長(zhǎng)度。 對(duì)一給定點(diǎn)q,我們想要找出在R上離q最近的點(diǎn)q'

            這是一個(gè)簡(jiǎn)單的向量到向量的投影問(wèn)題,設(shè)vporgq的向量,我們希望得到vd上的投影,或v平行于d的部分,如圖13.2所示:

            點(diǎn)乘v . d的結(jié)果就是滿足p(t)=q'的t值。

            t = d . v = d . (q - porg)

            q' = p(t) = porg + td = porg + (d . (q - porg))d

            公式13.2   計(jì)算參數(shù)射線上的最近點(diǎn)

            實(shí)際上,等式p(t)求得了在包含R的直線上距q最近的點(diǎn)。如果t<0t>L,則p(t)不在R的范圍內(nèi)。這種情況下,R上距q最近的點(diǎn)是原點(diǎn)(如果t<0)或者終點(diǎn)( t>L)。

            如果射線的定義是t00變化,d不必是單位向量,那么在計(jì)算t值時(shí)必須除以d的模:

            t = d . (q - porg) / ||d||

             

            平面上的最近點(diǎn)

            考慮平面p,其定義為標(biāo)準(zhǔn)的隱式:滿足p . n = d的點(diǎn)的集合。

            其中n為單位向量,給定一點(diǎn)q,我們想要找到點(diǎn)q',它是qp上的投影。q'就是p上離q最近的點(diǎn)。

            前面已經(jīng)學(xué)過(guò)如果計(jì)算點(diǎn)到平面上的距離,為了計(jì)算q',只要在n的方向上平移一段距離(公式13.3):

            q' = q + (d - q .n) . n

            公式13.3   計(jì)算平面上的最近點(diǎn)

            注意到,該式和用于計(jì)算在2D中隱式直線上最近點(diǎn)的公式13.1相同。

             

            圓和球上的最近點(diǎn)

            考慮2D中的點(diǎn)q和圓心為c、半徑為r的圓(下面的討論也適用于3D中的球體)。我們希望找到點(diǎn)q',它是圓上離q最近的點(diǎn)。

            設(shè)d為從q指向c的向量,該向量和圓相交于q'。設(shè)b為從q指向q'的向量,如圖13.3所示:

            可以清楚地看出,||b|| = ||d|| - r,因此:

            b = ((||d|| - r)/||d||)d

            將此位移加到q上,并將它投影到圓上(公式13.4):

            q' = q + b = q + ((||d|| - r)/||d||)d

            公式13.4   計(jì)算圓或球上的最近點(diǎn)

             

            AABB上的最近點(diǎn)

            設(shè)B是由極值點(diǎn)pminpmax定義的AABB。對(duì)任意點(diǎn)q都能很容易地計(jì)算出B上距離q最近的點(diǎn)q'。所用的方法是按一定的順序沿著每條軸將q推向B。見(jiàn)程序清單13.1

                Listing 13.1: Computing the closest point in an AABB to a point
               
               
            if (x < minX) 
                  x = minX;
               
            else if (x > maxX) 
                  x = maxX;
               
               
            if (y < minY) 
                  y = minY;
               
            else if (y > maxY) 
                  y = maxY;
               
               
            if (z < minZ) 
                  z = minZ;
               
            else if (z > maxZ) 
                  z = maxZ;

            注意,如果q本來(lái)就在矩形邊界框內(nèi)部,代碼運(yùn)行的結(jié)果將返回原來(lái)的點(diǎn)。

            posted on 2008-02-26 16:04 lovedday 閱讀(768) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            公告

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            隨筆分類(178)

            3D游戲編程相關(guān)鏈接

            搜索

            最新評(píng)論

            久久99精品国产麻豆婷婷| 亚洲国产精品狼友中文久久久| 成人综合久久精品色婷婷| 国产69精品久久久久APP下载| 久久只这里是精品66| 久久ww精品w免费人成| 亚洲国产天堂久久综合网站| 色悠久久久久久久综合网| 久久不见久久见免费视频7| 久久青青草原亚洲av无码| 大香伊人久久精品一区二区| 久久被窝电影亚洲爽爽爽| 亚洲一区精品伊人久久伊人| 久久99国产综合精品免费| 欧洲国产伦久久久久久久| 99国产欧美精品久久久蜜芽| 伊人久久大香线焦AV综合影院| 色综合合久久天天综合绕视看 | 国内精品久久久久久麻豆| 2021国产精品午夜久久| 青青青青久久精品国产 | 亚洲女久久久噜噜噜熟女| 国产精品免费久久久久电影网| 久久99热只有频精品8| 久久婷婷五月综合成人D啪| 99久久久精品| 国产婷婷成人久久Av免费高清| 亚洲人成电影网站久久| 久久久久久久综合日本| 狠狠色丁香久久婷婷综| 久久久久亚洲AV片无码下载蜜桃| 久久午夜无码鲁丝片秋霞 | 99久久免费国产精品| 久久精品人人做人人爽97| 色狠狠久久AV五月综合| 性欧美丰满熟妇XXXX性久久久| 色悠久久久久久久综合网| 欧美性大战久久久久久| 青青热久久国产久精品 | 狠狠色噜噜色狠狠狠综合久久| 伊人色综合久久天天人守人婷|