<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
        主站蜘蛛池模板: 两个人看的www免费视频| 亚洲精华国产精华精华液| 免费一级毛suv好看的国产网站| 黄色免费网站网址| 亚洲A∨无码一区二区三区| 精品国产福利尤物免费| 亚洲精品高清在线| 极品美女一级毛片免费| 在线观看国产情趣免费视频| 亚洲xxxx视频| 爽爽日本在线视频免费| 亚洲免费福利在线视频| 青青久在线视频免费观看| 亚洲精品人成网在线播放影院| 69式国产真人免费视频| 亚洲日韩中文字幕天堂不卡| 99re免费99re在线视频手机版| 亚洲AV成人无码久久精品老人| 日韩免费电影网址| 亚洲综合婷婷久久| 色老头永久免费网站| 亚洲一级毛片在线观| 午夜视频免费观看| 在线播放国产不卡免费视频| 亚洲一级特黄大片在线观看| 高清免费久久午夜精品| 夜夜春亚洲嫩草影院| 免费黄网站在线观看| 亚洲国产高清视频在线观看| 91在线视频免费看| 边摸边吃奶边做爽免费视频网站| 亚洲A丁香五香天堂网| 久久久WWW免费人成精品| 亚洲国产精华液网站w| 1000部拍拍拍18勿入免费视频下载 | 亚洲第一页日韩专区| 一级看片免费视频| 亚洲一二成人精品区| 妻子5免费完整高清电视| 综合偷自拍亚洲乱中文字幕| 国产亚洲精午夜久久久久久|