<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亚洲伊| 女性无套免费网站在线看| 色综合久久精品亚洲国产| 国产一级淫片视频免费看| 国产精品亚洲а∨无码播放不卡 | 成年女人色毛片免费看| 亚洲伊人精品综合在合线| 青草草色A免费观看在线| 亚洲一卡2卡3卡4卡乱码 在线 | 亚洲午夜在线一区| 丁香花免费高清视频完整版| 亚洲AV无码无限在线观看不卡| 大陆一级毛片免费视频观看| 激情婷婷成人亚洲综合| 区三区激情福利综合中文字幕在线一区亚洲视频1| 曰批全过程免费视频免费看 | 国产亚洲精品不卡在线| 十八禁视频在线观看免费无码无遮挡骂过 | 亚洲伊人色欲综合网| 久久免费线看线看| 亚洲成综合人影院在院播放| 成年轻人网站色免费看| 色视频在线观看免费| 精品国产亚洲一区二区三区| xxxxx免费视频| 爱情岛亚洲论坛在线观看| 亚洲性猛交XXXX| 男男AV纯肉无码免费播放无码| 日本系列1页亚洲系列| 久久久久亚洲爆乳少妇无| 99re6在线视频精品免费下载| 亚洲欧美国产国产综合一区| 久久久久国产亚洲AV麻豆| 国产成人免费午夜在线观看| 狠狠综合亚洲综合亚洲色| 亚洲精品福利视频| 免费永久在线观看黄网站|