亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? matrix4f.java

?? NeHe用java與OpenGL結合教程源碼
?? JAVA
字號:
package demos.nehe.lesson30.math;

/**
 * @author Abdul Bezrati
 */
public class Matrix4f {
    float elements[] = new float[16];

    public Matrix4f() {
    }

    public Matrix4f(float elements[]) {
        for (int i = 0; i < 16; i++)
            this.elements[i] = elements[i];
    }

    public Matrix4f(Tuple3f t1, Tuple3f t2, Tuple3f t3, boolean row_column) {

        if (row_column) {
            elements[0] = t1.x;
            elements[1] = t1.y;
            elements[2] = t1.z;
            elements[4] = t2.x;
            elements[5] = t2.y;
            elements[6] = t2.z;
            elements[8] = t3.x;
            elements[9] = t3.y;
            elements[10] = t3.z;
        } else {
            elements[0] = t1.x;
            elements[1] = t2.x;
            elements[2] = t3.x;
            elements[4] = t1.y;
            elements[5] = t2.y;
            elements[6] = t3.y;
            elements[8] = t1.z;
            elements[9] = t2.z;
            elements[10] = t3.z;
        }

        elements[15] = 1;
    }

    void load_identity() {

        elements[0] = 1;
        elements[1] = 0;
        elements[2] = 0;
        elements[3] = 0;
        elements[4] = 0;
        elements[5] = 1;
        elements[6] = 0;
        elements[7] = 0;
        elements[8] = 0;
        elements[9] = 0;
        elements[10] = 1;
        elements[11] = 0;
        elements[12] = 0;
        elements[13] = 0;
        elements[14] = 0;
        elements[15] = 1;
    }

    void add(Matrix4f m) {

        for (int i = 0; i < 16; i++)
            elements[i] += m.elements[i];
    }

    void sub(Matrix4f m) {

        for (int i = 0; i < 16; i++)
            elements[i] -= m.elements[i];
    }

    void mul(float s) {

        for (int i = 0; i < 16; i++)
            elements[i] *= s;
    }

    void mul(Matrix4f m) {

        float copy[] = new float[16];
        for (int i = 0; i < 16; i++)
            copy[i] = elements[i];

        for (int i = 0; i < 16; i += 4) {
            elements[i + 0] = copy[i] * m.elements[0] + copy[i + 1] * m.elements[4] + copy[i + 2] * m.elements[8] + copy[i + 3] * m.elements[12];
            elements[i + 1] = copy[i] * m.elements[1] + copy[i + 1] * m.elements[5] + copy[i + 2] * m.elements[9] + copy[i + 3] * m.elements[13];
            elements[i + 2] = copy[i] * m.elements[2] + copy[i + 1] * m.elements[6] + copy[i + 2] * m.elements[10] + copy[i + 3] * m.elements[14];
            elements[i + 3] = copy[i] * m.elements[3] + copy[i + 1] * m.elements[7] + copy[i + 2] * m.elements[11] + copy[i + 3] * m.elements[15];
        }
    }

    void scale(float x, float y, float z) {

        elements[0] *= x;
        elements[5] *= y;
        elements[10] *= z;
    }

    void translate(float x, float y, float z) {

        elements[3] += x;
        elements[7] += y;
        elements[11] += z;
    }

    void add(Matrix4f m, Matrix4f n) {

        for (int i = 0; i < 16; i++)
            elements[i] = m.elements[i] + n.elements[i];
    }

    void sub(Matrix4f m, Matrix4f n) {

        for (int i = 0; i < 16; i++)
            elements[i] = m.elements[i] - n.elements[i];
    }

    void mul(Matrix4f m, Matrix4f n) {

        for (int i = 0; i < 16; i += 4) {
            elements[i + 0] = m.elements[i] * n.elements[0] + m.elements[i + 1] * n.elements[4] + m.elements[i + 2] * n.elements[8] + m.elements[i + 3] * n.elements[12];
            elements[i + 1] = m.elements[i] * n.elements[1] + m.elements[i + 1] * n.elements[5] + m.elements[i + 2] * n.elements[9] + m.elements[i + 3] * n.elements[13];
            elements[i + 2] = m.elements[i] * n.elements[2] + m.elements[i + 1] * n.elements[6] + m.elements[i + 2] * n.elements[10] + m.elements[i + 3] * n.elements[14];
            elements[i + 3] = m.elements[i] * n.elements[3] + m.elements[i + 1] * n.elements[7] + m.elements[i + 2] * n.elements[11] + m.elements[i + 3] * n.elements[15];
        }
    }

    void invert(Matrix4f m) {

        elements[0] = m.elements[0];
        elements[1] = m.elements[4];
        elements[2] = m.elements[8];
        elements[3] = 0;
        elements[4] = m.elements[1];
        elements[5] = m.elements[5];
        elements[6] = m.elements[9];
        elements[7] = 0;
        elements[8] = m.elements[2];
        elements[9] = m.elements[6];
        elements[10] = m.elements[10];
        elements[11] = 0;

        elements[12] = -(m.elements[12] * m.elements[0]) - (m.elements[13] * m.elements[1]) - (m.elements[14] * m.elements[2]);
        elements[13] = -(m.elements[12] * m.elements[4]) - (m.elements[13] * m.elements[5]) - (m.elements[14] * m.elements[6]);
        elements[14] = -(m.elements[12] * m.elements[8]) - (m.elements[13] * m.elements[9]) - (m.elements[14] * m.elements[10]);
        elements[15] = 1;
    }

    void transpose() {

        float copy[] = new float[16];
        for (int i = 0; i < 16; i++)
            copy[i] = elements[i];

        elements[0] = copy[0];
        elements[1] = copy[4];
        elements[2] = copy[8];
        elements[3] = copy[12];
        elements[4] = copy[1];
        elements[5] = copy[5];
        elements[6] = copy[9];
        elements[7] = copy[13];
        elements[8] = copy[2];
        elements[9] = copy[6];
        elements[10] = copy[10];
        elements[11] = copy[14];
        elements[12] = copy[3];
        elements[13] = copy[7];
        elements[14] = copy[11];
        elements[15] = copy[15];
    }

    void rotateX(float angle) {

        angle *= (float) Math.PI / 180;

        elements[0] = 1;
        elements[1] = 0;
        elements[2] = 0;
        elements[3] = 0;
        elements[4] = 0;
        elements[5] = (float) Math.cos(angle);
        elements[6] = -(float) Math.sin(angle);
        elements[7] = 0;
        elements[8] = 0;
        elements[9] = (float) Math.sin(angle);
        elements[10] = (float) Math.cos(angle);
        elements[11] = 0;
        elements[12] = 0;
        elements[13] = 0;
        elements[14] = 0;
        elements[15] = 1;
    }

    void rotateY(float angle) {

        angle *= (float) Math.PI / 180;

        elements[0] = (float) Math.cos(angle);
        elements[1] = 0;
        elements[2] = (float) Math.sin(angle);
        elements[3] = 0;
        elements[4] = 0;
        elements[5] = 1;
        elements[6] = 0;
        elements[7] = 0;
        elements[8] = -(float) Math.sin(angle);
        elements[9] = 0;
        elements[10] = (float) Math.cos(angle);
        elements[11] = 0;
        elements[12] = 0;
        elements[13] = 0;
        elements[14] = 0;
        elements[15] = 1;
    }

    void rotateZ(float angle) {

        angle *= (float) Math.PI / 180;

        elements[0] = (float) Math.cos(angle);
        elements[1] = (float) Math.sin(angle);
        elements[2] = 0;
        elements[3] = 0;
        elements[4] = -(float) Math.sin(angle);
        elements[5] = (float) Math.cos(angle);
        elements[6] = 0;
        elements[7] = 0;
        elements[8] = 0;
        elements[9] = 0;
        elements[10] = 1;
        elements[11] = 0;
        elements[12] = 0;
        elements[13] = 0;
        elements[14] = 0;
        elements[15] = 1;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲猫色日本管| 欧美一区二区黄| 韩日欧美一区二区三区| 美国三级日本三级久久99| 免费欧美在线视频| 国产一区在线看| 国产白丝网站精品污在线入口| 激情综合亚洲精品| 国产a精品视频| 日韩色视频在线观看| 久久久天堂av| 亚洲精品国产a久久久久久| 亚洲综合激情另类小说区| 日本亚洲天堂网| 国产成人精品综合在线观看| 国产精品小仙女| 91亚洲精品久久久蜜桃| 欧美日韩国产片| 久久久亚洲高清| 蜜桃精品视频在线| 7777精品伊人久久久大香线蕉完整版 | 中文字幕二三区不卡| 国产精品家庭影院| 视频一区在线播放| 国产综合久久久久久久久久久久| 欧美人牲a欧美精品| 性做久久久久久| 成人午夜激情视频| 7777精品伊人久久久大香线蕉| 一区二区三区四区不卡视频| 精品一区二区国语对白| 欧美一级久久久| 美女一区二区在线观看| 日韩欧美成人一区| 一区二区三区在线视频观看58| av在线播放不卡| 欧美一区二区在线观看| 日韩国产精品久久久久久亚洲| 欧美乱妇15p| 日韩一区中文字幕| 国产一区二区三区免费看| 久久日韩粉嫩一区二区三区| 国产伦精品一区二区三区视频青涩| 久久久三级国产网站| 国产xxx精品视频大全| 最新欧美精品一区二区三区| 在线看日韩精品电影| 中文字幕一区二区三区视频| 色婷婷一区二区三区四区| 26uuu久久天堂性欧美| 亚洲成a人片在线观看中文| 69堂亚洲精品首页| 激情成人综合网| 国产精品久久久久精k8| 91福利精品第一导航| 国产精品福利av| 欧美三日本三级三级在线播放| 中文字幕日本乱码精品影院| 在线视频中文字幕一区二区| 免费精品视频在线| 中文字幕久久午夜不卡| 91视频www| 青娱乐精品视频| 国产欧美日韩一区二区三区在线观看| 狠狠色丁香久久婷婷综合丁香| 欧美激情一区二区三区四区| 欧美色大人视频| 国产二区国产一区在线观看| 一区二区三区四区视频精品免费| 欧美久久久久久久久久| 成人精品视频一区二区三区| 亚洲6080在线| 国产精品每日更新在线播放网址| 成人永久免费视频| 视频一区二区三区入口| 国产精品麻豆网站| 日韩一区二区三区免费看| 99久久久精品| 亚洲午夜一二三区视频| 欧美日韩视频不卡| 东方aⅴ免费观看久久av| 午夜免费久久看| 欧美大度的电影原声| 日本高清不卡在线观看| 国产精品一品二品| 日本网站在线观看一区二区三区| 中文字幕av一区二区三区| 欧美一区中文字幕| 一本大道久久a久久综合| 国产成人一区在线| 毛片不卡一区二区| 婷婷亚洲久悠悠色悠在线播放| 亚洲欧美另类久久久精品2019| 国产三级久久久| 精品国产第一区二区三区观看体验| 国产成人精品免费网站| 久久国产精品99久久久久久老狼| 国产亚洲欧美色| 91福利在线观看| 大尺度一区二区| 国产福利精品一区| 九色porny丨国产精品| 日韩黄色免费电影| 日韩在线a电影| 日韩精品一卡二卡三卡四卡无卡| 一区二区三区四区在线免费观看| 中文字幕日韩欧美一区二区三区| 国产精品视频观看| 国产三级精品视频| 国产精品视频麻豆| 国产精品国产成人国产三级 | 国产福利精品一区二区| 国产真实乱偷精品视频免| 麻豆精品视频在线| 精品一区二区在线观看| 精品亚洲porn| 激情图区综合网| 狠狠色丁香九九婷婷综合五月| 老色鬼精品视频在线观看播放| 久久精品噜噜噜成人88aⅴ| 秋霞午夜av一区二区三区| 日本中文字幕一区| 精品一区二区三区不卡| 国产最新精品精品你懂的| 国产v日产∨综合v精品视频| 成人午夜电影小说| 色妞www精品视频| 欧美婷婷六月丁香综合色| 丁香六月久久综合狠狠色| 国产91精品欧美| 91啪九色porn原创视频在线观看| 色综合久久中文综合久久牛| 欧美日韩一本到| 精品国产1区二区| 国产精品久久久久一区二区三区共| 亚洲精品老司机| 秋霞影院一区二区| 丁香婷婷综合色啪| 欧美在线观看视频一区二区三区| 91精品欧美综合在线观看最新| 日韩美女视频在线| 欧美韩国日本综合| 亚洲va在线va天堂| 狠狠色狠狠色综合日日91app| 99久久99久久综合| 欧美丰满少妇xxxxx高潮对白| 久久久一区二区| 一区二区三区国产豹纹内裤在线| 日韩一区精品视频| 成人黄色网址在线观看| 韩国欧美国产1区| 欧美老女人第四色| 久久久久久影视| 亚洲福利国产精品| 懂色av一区二区三区免费观看| 欧美视频完全免费看| 久久久无码精品亚洲日韩按摩| 亚洲精品免费电影| 国产成人超碰人人澡人人澡| 欧美午夜理伦三级在线观看| 国产亚洲精品福利| 日韩av电影天堂| 91久久精品一区二区| 国产喂奶挤奶一区二区三区| 爽好久久久欧美精品| 成人av在线一区二区| 精品精品国产高清a毛片牛牛| 亚洲尤物在线视频观看| 成人h动漫精品| 精品日产卡一卡二卡麻豆| 日韩欧美成人激情| 一区二区欧美在线观看| 成人福利视频网站| 欧美成人福利视频| 日韩二区三区在线观看| 色婷婷国产精品综合在线观看| 久久精品在这里| 九九视频精品免费| 欧美一区二区三区在线| 亚洲午夜久久久久久久久电影网| 99精品视频在线播放观看| 久久久久久久久久久黄色| 免费不卡在线视频| 欧美喷水一区二区| 午夜精品爽啪视频| 欧美伊人久久久久久久久影院| 国产精品成人一区二区三区夜夜夜| 国产在线国偷精品免费看| 91精品国产一区二区| 日本欧美肥老太交大片| 欧美精品丝袜中出| 亚洲一区二区三区免费视频| 91久久奴性调教| 亚洲久草在线视频| 在线精品国精品国产尤物884a| 亚洲日本在线a| 国产精品一卡二卡在线观看| 欧美mv和日韩mv国产网站| 久久99国产精品免费网站| 欧美大度的电影原声|