• 大小: 4KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Java
  • 标签: Java  矩阵  

资源简介

矩阵的Java实现,含矩阵的所有运算,也可与向量进行运算表示图形的变换。

资源截图

代码片段和文件信息

package Javagames.util;

public class Matrix3x3f {
    public static final int DIMENSION = 3;
    private float[][] m = new float[DIMENSION][DIMENSION];
    //m[2][2]=0时,只对第一次向量变换有效,变换后,w = 0

    public Matrix3x3f() {}

    public Matrix3x3f(float[][] m) {
        setMatrix(m);
    }

    public Matrix3x3f add(Matrix3x3f m1) {
        float[][] tmp = new float[DIMENSION][DIMENSION];
        for (int i = 0; i < DIMENSION; i++) {
            for (int j = 0; j < DIMENSION; j++) {
                tmp[i][j] = m[i][j] + m1.m[i][j];
            }
        }
        return new Matrix3x3f(tmp);
    }

    public Matrix3x3f sub(Matrix3x3f m1) {
        float[][] tmp = new float[DIMENSION][DIMENSION];
        for (int i = 0; i < DIMENSION; i++) {
            for (int j = 0; j < DIMENSION; j++) {
                tmp[i][j] = m[i][j] - m1.m[i][j];
            }
        }
        return new Matrix3x3f(tmp);
    }

    public Matrix3x3f mul(Matrix3x3f m1) {
        float[][] tmp = new float[DIMENSION][DIMENSION];
        for (int i = 0; i < DIMENSION; i++) {
            for (int k = 0; k < DIMENSION; k++) {
                for(int j=0;j                    tmp[i][j] += m[i][k] * m1.m[k][j];
                }
            }
        }
        return new Matrix3x3f(tmp);
    }

    public void setMatrix(float[][] m) {
        if (m.length == DIMENSION && m[0].length == DIMENSION) {
            this.m = m;
        }
    }

    public static Matrix3x3f zero() {
        return new Matrix3x3f(new float[DIMENSION][DIMENSION]);
    }

    public static Matrix3x3f identity() {
        float[][] tmp = new float[DIMENSION][DIMENSION];
        for (int i = 0; i < DIMENSION; i++) {
            tmp[i][i] = 1.0f;
        }
        return new Matrix3x3f(tmp);
    }

    public static Matrix3x3f translate(Vector2f v) {
        return translate(v.x v.y);
    }

    public static Matrix3x3f translate(float x float y) {
        return new Matrix3x

评论

共有 条评论