All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jeometry.simple.factory.SimpleMathBuilder Maven / Gradle / Ivy

The newest version!
package org.jeometry.simple.factory;

import org.jeometry.Jeometry;
import org.jeometry.factory.MathBuilder;
import org.jeometry.math.Matrix;
import org.jeometry.math.Quaternion;
import org.jeometry.math.Vector;
import org.jeometry.math.decomposition.CholeskyDecomposition;
import org.jeometry.math.decomposition.EigenDecomposition;
import org.jeometry.math.decomposition.LUDecomposition;
import org.jeometry.math.decomposition.QRDecomposition;
import org.jeometry.math.decomposition.SVDDecomposition;
import org.jeometry.math.solver.Solver;
import org.jeometry.simple.math.SimpleMatrix;
import org.jeometry.simple.math.SimpleQuaternion;
import org.jeometry.simple.math.SimpleVector;
import org.jeometry.simple.math.decomposition.SimpleCholeskyDecomposition;
import org.jeometry.simple.math.decomposition.SimpleEigenDecomposition;
import org.jeometry.simple.math.decomposition.SimpleLUDecomposition;
import org.jeometry.simple.math.decomposition.SimpleQRDecomposition;
import org.jeometry.simple.math.decomposition.SimpleSVDDecomposition;
import org.jeometry.simple.math.solver.SimpleGaussEliminationSolver;

/**
 * A {@link MathBuilder math builder} implementation that provide simples pure java implementations.
 * @author Julien Seinturier - COMEX S.A. - [email protected] - https://github.com/jorigin/jeometry
 * @version {@value Jeometry#version}
 * @since 1.0.0
 *
 */
public class SimpleMathBuilder implements MathBuilder{

	@Override
	public Vector createVector(int size) {
		return new SimpleVector(size);
	}

	@Override
	public Vector createVector(double[] components) {
		return new SimpleVector(components);
	}

	@Override
	public Vector createVector(Vector source) {
		return new SimpleVector(source);
	}
	
	@Override
	public Matrix createMatrix(int rows, int cols) {
		return new SimpleMatrix(rows, cols);
	}

	@Override
	public Matrix createMatrix(double[][] data) {
		return new SimpleMatrix(data);
	}

	@Override
	public Matrix createMatrix(int rows, int columns, double[] data, int ordering) {
		return new SimpleMatrix(rows, columns, data, ordering);
	}

	@Override
	public Matrix createMatrix(Matrix matrix) {
		return new SimpleMatrix(matrix);
	}
	
	@Override
	public Matrix createMatrixEye(int size) {
		SimpleMatrix m = new SimpleMatrix(size, size);
		
		for(int row = 0; row < m.getRowsCount(); row++) {
			for(int col = 0; col < m.getColumnsCount(); col++) {
				if (row == col) {
					m.setValue(row, col, 1.0d);
				} else {
					m.setValue(row, col, 0.0d);
				}
			}
		}
		
		return m;
	}

	@Override
	public Quaternion createQuaternion() {
		return new SimpleQuaternion();
	}

	@Override
	public Quaternion createQuaternion(double scalar, double i, double j, double k) {
		return new SimpleQuaternion(scalar, i, j, k);
	}

	@Override
	public Solver createSolver(int type) {
		if (type == Solver.METHOD_GAUSS) {
			return new SimpleGaussEliminationSolver();
		}
		return null;
	}

	@Override
	public Solver createSolver() {
		return new SimpleGaussEliminationSolver();
	}

	@Override
	public LUDecomposition createLUDecomposition(Matrix matrix) {
		return new SimpleLUDecomposition(matrix);
	}

	@Override
	public EigenDecomposition createEigenDecomposition(Matrix matrix) {
		return new SimpleEigenDecomposition(matrix);
	}

	@Override
	public SVDDecomposition createSVDDecomposition(Matrix matrix) {
		return new SimpleSVDDecomposition(matrix);
	}

	@Override
	public QRDecomposition createQRDecomposition(Matrix matrix) {
		return new SimpleQRDecomposition(matrix);
	}
	
	@Override
	public CholeskyDecomposition createCholeskyDecomposition(Matrix matrix) {
		return new SimpleCholeskyDecomposition(matrix);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy