<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          3D數(shù)學(xué)基礎(chǔ)(二)| 向量

          共 1701字,需瀏覽 4分鐘

           ·

          2021-12-29 21:14

          3D數(shù)學(xué)基礎(chǔ):圖形與游戲開發(fā)

          前言

          這是白玉無冰記錄3D數(shù)學(xué)第二篇章,向量!往期目錄如下:

          9154dafefdac4e2c12fad89a47be0bbb.webp

          在寫之前,白玉無冰一直在思考如何去講述向量,思來想去,還是以實際問題例子出發(fā),去講這個神奇的向量!

          本文不打算講過多的定義和推導(dǎo),更多地以例子出發(fā)去探討。如果需要更深入地理解,可參考文末給出的參考書籍與資料。

          64a7dce5db77fdb081040e19a8ab4801.webp開始

          基本定義

          向量(vector)描述了方向和大小。向量也有自己的運(yùn)算規(guī)則,向量的加減法與數(shù)乘的意義見下圖。

          3aeb4cc5144c6636622efeaac3429516.webp向量加法與數(shù)乘

          除了向量間的加法,向量之間還存在著兩種乘法:

          • 點乘(Dot Product)
          • 叉乘(Cross Product)
          537744869ddf5d2f7a87b636bc0685aa.webp向量點乘與叉乘

          向量反射

          已知:

          • 入射向量
          • 單位法線量
          • 入射角與反射角相同

          求:

          • 反射向量
          654a04914454b38d36141edb4385a123.webp向量反射

          反復(fù)橫跳的瞄準(zhǔn)線這篇文章也用到了反射向量的計算。

          88e7182187f8ff1df840b25d42245249.webp反復(fù)橫跳的瞄準(zhǔn)線

          旋轉(zhuǎn)2D角色

          已知:

          • 角色位置和朝向
          • 目標(biāo)位置

          求:

          • 角色往哪個方向旋轉(zhuǎn)多少度可朝向目標(biāo)位置
          51b6cbdde21db98b0f2f0b1251aab2de.webp旋轉(zhuǎn)2D角色

          概況來說,求角度用點乘,求旋轉(zhuǎn)方向用叉乘。

          8694dbd08034676d0ea2b5d4eeba1ff6.webp旋轉(zhuǎn)2D角色求解

          在 Cocos Creator 中的 Vec2 使用 signAngle 的邏輯也是如此。

          //?class?Vec2
          /**
          *?@en?Get?angle?in?radian?between?this?and?vector?with?direction.
          *?@zh 獲取當(dāng)前向量和指定向量之間的有符號角度。

          *?有符號角度的取值范圍為?(-180, 180],當(dāng)前向量可以通過逆時針旋轉(zhuǎn)有符號角度與指定向量同向。

          *?@param?other?specified?vector
          *?@return?The?signed?angle?between?the?current?vector?and?the?specified?vector?(in?radians);?if?there?is?a?zero?vector?in?the?current?vector?and?the?specified?vector,?0?is?returned.
          */

          public?signAngle?(other:?Vec2)?{
          ????const?angle?=?this.angle(other);
          ????return?this.cross(other)?0???-angle?:?angle;
          }

          判斷多邊形凹凸點

          已知:

          • 多邊形的頂點坐標(biāo)(逆時針,簡易多邊形)

          求:

          • 判斷每個點的凹凸性
          2365f00020303f9eb7e310e15bce7edd.webp凹凸多邊形

          巧用向量叉乘即可求解。

          多邊形裁剪圖片中的切耳法用到了這個判斷。

          判斷三角形內(nèi)的點

          已知:

          • 三角形三個點
          • 其中一個共面的點

          求:

          • 該點是否在三角形內(nèi)

          判斷點是否在三角形內(nèi),可以通過叉乘計算點與線的位置關(guān)系判斷出。

          82d40d83f4f5230bf7428a9ffb5a479f.webp點是否在三角形內(nèi)

          GAMES 103-02 中提到,也可用法向量判斷。

          842b7f3c3529eebbaa52a7d7dd1a4dd8.webp點是否在三角形內(nèi)

          前后左右

          已知:

          • 各個飛機(jī)的坐標(biāo)和黑色飛機(jī)的朝向。

          求:

          • 其他飛機(jī)與黑色飛機(jī)前后左右的關(guān)系?
          7baa59b161ce8ad90682f8789ee0fdab.webp前后左右

          解答:

          • 點乘 -> 前后
          • 叉乘 -> 左右
          1eb7545d61935da0281ed8d3115ef4d3.webp前后左右

          折紙效果

          【折紙效果!(2D)】中也涉及一些向量計算,這里搬運(yùn)過來,詳細(xì)講解可點擊文章鏈接查看。

          85788b110bde0cb9501d3ff38af42cb0.webp折紙效果

          分割多邊形的點。向量間的點積正好可以幫助我們判斷夾角問題。

          b8e906f9cc17a1c4d75d4cd7af942f7f.webp分割

          求對稱點同樣可以運(yùn)用向量計算。

          1. 求出該頂點與中點的向量
          2. 求出該點在觸摸方向的單位向量的投影(點乘),這正好是距離的一半
          3. 求出對稱點坐標(biāo)(距離乘方向向量+起始點坐標(biāo))
          848e5c17f6ec569014820b1b5b9a619c.webp求對稱點

          【3D折紙效果】同樣也使用到向量相關(guān)的知識。

          5395dcdb60e7471398dff47fc4115947.webp效果預(yù)覽

          使用向量叉乘判斷網(wǎng)格點在觸摸軸的左邊還是右邊。

          fc5660da7d26dc452dabcb6574dd2714.webp向量叉乘

          矢量和平面

          本段摘自《游戲編程精粹2》中的2.2章節(jié)。

          已知:

          • 起點 終點
          • 平面單位法線向量 和面上的一個點
          daddbcc8b3b6daeb887fdbe99224fece.webp矢量和平面

          求:相對于面的高度(點乘)

          ecd7b4aefc9374948b588a9713a98abe.webp相對于面的高度

          求:直接與平面相交點(投影到法向量,相似三角形)

          761541a99b09893b240fb8a82cea841e.webp直接與平面相交點

          求:到交點的距離(兩種方法)

          ddeda1b12430c1ad5812a6ee0e3653d1.webp到交點的距離

          計算反射點

          82a5323d6737b2e3addb20deab8f8394.webp計算反射點

          向量空間

          本部分內(nèi)容摘自《3D游戲與計算機(jī)圖形學(xué)中的數(shù)學(xué)方法》1.4節(jié),記錄是為了更好的忘記。

          69dba9b6ed0afe9d17861bb5a48b811d.webp向量空間

          向量的基

          ac86513ac4f7425f8d8a46c1051809d3.webp向量的基

          加上相互垂直條件,正交基

          627fcfa6991d5a7cf36618a82f7bd15d.webp正交基

          再加上單位長度限制,正交規(guī)范基。

          7a862e087dfda164313f22a73ec4481c.webp正交規(guī)范基

          自然數(shù)

          講到向量,這里再扯點其他和向量相關(guān)的。

          自然數(shù)也可以分解成正交基向量表示。互質(zhì)的自然數(shù),正好與向量垂直對應(yīng)。

          a93868bbac24243d33f5d100bb2075e0.webp自然數(shù)分解結(jié)束

          預(yù)期白玉無冰下一篇記錄關(guān)于矩陣的筆記??。

          4c85102d0182ece003a2d5ce018850bb.webp


          參考資料

          • 《3D數(shù)學(xué)基礎(chǔ):圖形與游戲開發(fā)》
          • 《Fundamentals of Computer Graphics, Fourth Edition》
          • 《游戲編程算法與技巧》
          • http://games-cn.org/
          • 《游戲編程精粹2》
          • 《3D游戲與計算機(jī)圖形學(xué)中的數(shù)學(xué)方法》
          • 《數(shù)學(xué)女孩2》

          更多精彩歡迎關(guān)注微信公眾號


          往期系列:


          瀏覽 64
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一级无码免费视频 | 成人黄页网 | 美女自慰网站在线观看 | 亚洲婷婷精品国产 | 黄色日本免费看 |