<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Three.js中矩陣和向量的使用教程

        來源:懂視網 責編:小采 時間:2020-11-27 21:59:43
        文檔

        Three.js中矩陣和向量的使用教程

        Three.js中矩陣和向量的使用教程:前言 提起矩陣,很容易讓人想起我們曾經學不會的線性代數和離散數學,但是作為圖形開發中的核心部分,它代表著每一次的運動和變換,就像魚不能脫離水一樣,矩陣并不是一個可以避之不談的話題。 好消息是,Three.js幫助我們把許多矩陣運算封裝成了一些頂層的
        推薦度:
        導讀Three.js中矩陣和向量的使用教程:前言 提起矩陣,很容易讓人想起我們曾經學不會的線性代數和離散數學,但是作為圖形開發中的核心部分,它代表著每一次的運動和變換,就像魚不能脫離水一樣,矩陣并不是一個可以避之不談的話題。 好消息是,Three.js幫助我們把許多矩陣運算封裝成了一些頂層的

        最終的變換向量 = 原始向量 * 變換矩陣

        用我們上面例子中的方法來還原這個公式,即:

        var vector = new THREE.Vector3(20, 20, 0);
        var matrix = new THREE.Matrix4();
        matrix.makeTranslation(10, 40, 0);
        vector.applyMatrix4(matrix);

        除了平移,Three的API中還提供了rotation和scale,scale變化很簡單,它將使用makeScale(x, y, z)這個方法來表示縮放。

        而旋轉則相對復雜許多,Three.js提供以下旋轉方法:

        matrix.makeRotationX(angle);
        matrix.makeRotationY(angle);
        matrix.makeRotationZ(angle);
        matrix.makeRotationAxis(axis, angle);
        matrix.makeRotationFromEuler(euler);
        matrix.makeRotationFromQuaternion(quaternion);

        前三個方法分別代表的是繞X、Y、Z三個軸旋轉,無需贅述。

        第四個方法是前三個方法的整合版,第一個參數表示的是代表xyz的THREE.Vector3,第二個參數是旋轉的弧度。下面兩行代碼是等價的:

        matrix.makeRotationX(Math.PI);
        matrix.makeRotationAxis(new THREE.Vector3(1, 0, 0), Math.PI);

        第五個方法表示圍繞x、y和z軸的旋轉,這是表示旋轉最常用的方式;第六個方法是一種基于軸和角度表示旋轉的替代方法。

        最后,Three.js api提供了一種方法來創建表示平移,旋轉和縮放的組合的矩陣 -- matrix.compose:

        var translation = new THREE.Vector3();
        var rotation = new THREE.Quaternion();
        var scale = new THREE.Vector3();
        var matrix = new THREE.Matrix4();
        matrix.compose(translation, rotation, scale);

        矩陣相乘

        矩陣乘法的意義在于疊加。

        上圖表示了三個變化:旋轉、縮放和移動。

        通過按次序相乘,三個變化矩陣可以得出一個最終的變化矩陣:

        combinedMatrix = rotationMatrix * scaleMatrix * translationMatrix;

        Three.js里提供了兩種矩陣相乘的方法:

      1. matrix.multiply(otherMatrix)
      2. matrix.multiplyMatrices(matrixA, matrixB)
      3. 第一種方法表示將矩陣乘以另一個矩陣;而第二種方法代表的是將矩陣設置為matrixA * matrixB的結果。

        我們在示例中也使用到了第一個方法:將圓柱體的矩陣乘以新的平移矩陣,和將球的矩陣乘以一個旋轉矩陣。

        需要注意的是,乘法交換律不適用于矩陣乘法,矩陣乘法是具有次序的,先旋轉再移動和先移動再旋轉的結果是完全不同的。

        矩陣的逆

        在數字的運算里,除法相當于是乘法的“撤銷”操作:

        4 x 5 = 20
        20 / 5 = 4

        但是在矩陣計算里,這個守則同樣是不適用的。我們不能用向量去除一個矩陣,我們只能用向量去乘以一個矩陣的逆矩陣,來完成“撤銷”的操作。

        變化后的向量 = 原始向量 * 變化矩陣;
        逆矩陣 = 變化矩陣.inverse();
        原始向量 = 變化后的向量 * 逆矩陣;

        逆矩陣表示的是相反的變換。

        Three.js里提供了一種計算逆矩陣的方法:

        var matrix = new THREE.Matrix4();
        var inverseMatrix = new THREE.Matrix4();
        matrix.getInverse(inverseMatrix);

        除此之外,逆矩陣還應用在3D場景中處理相機對象的時候。

        最后

        矩陣在3D世界里是一種十分強大的工具,它能夠將任意變換都表示為一種相似的結構,并采用相同的計算過程。而實際上,矩陣的世界遠遠比這里介紹的內容更多,希望通過這些簡要的介紹,可以讓我們進入到一個更深的領域,并游刃有余的利用他處理圖形開發中更復雜的場景。

        好了,

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Three.js中矩陣和向量的使用教程

        Three.js中矩陣和向量的使用教程:前言 提起矩陣,很容易讓人想起我們曾經學不會的線性代數和離散數學,但是作為圖形開發中的核心部分,它代表著每一次的運動和變換,就像魚不能脫離水一樣,矩陣并不是一個可以避之不談的話題。 好消息是,Three.js幫助我們把許多矩陣運算封裝成了一些頂層的
        推薦度:
        標簽: 方法 教程 說明
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品人成网在线播放影院| 亚洲成人福利在线观看| 国产成人亚洲综合| 亚洲国产成人久久综合碰碰动漫3d| 亚洲福利一区二区精品秒拍| 国产精品亚洲一区二区三区在线观看| 亚洲第一视频在线观看免费| 国产v精品成人免费视频400条| 亚洲成a人在线看天堂无码| 亚洲国产综合人成综合网站00| 99久久人妻精品免费一区| 亚洲国产成人VA在线观看| 免费精品国产自产拍在线观看| 久久午夜免费视频| 亚洲国产天堂在线观看| 国产好大好硬好爽免费不卡| 亚洲国产成人精品无码久久久久久综合| 亚洲jizzjizz少妇| 黄页免费的网站勿入免费直接进入| 亚洲一区二区三区在线网站| 青青草无码免费一二三区| 亚洲激情电影在线| 在线免费观看中文字幕| 亚洲三级视频在线| 波多野结衣在线免费视频 | www.黄色免费网站| 亚洲精品无码久久久久久| 国产啪精品视频网免费| 亚洲av成人一区二区三区观看在线 | 亚洲欧洲∨国产一区二区三区| 亚洲精华国产精华精华液好用| 免费看国产一级特黄aa大片| 亚洲精品久久无码| 亚洲日韩在线中文字幕第一页| 一区二区三区在线免费看| 亚洲av永久无码精品古装片| av电影在线免费看| 亚洲日本乱码一区二区在线二产线| 在线观看永久免费视频网站| 亚洲精品9999久久久久无码 | 在线a亚洲v天堂网2018|