import java.util.ArrayList; import javax.vecmath.Point3d; import org.apache.commons.math3.linear.*; import org.apache.commons.math3.util.FastMath; public class tuval1{ public static void main(String[] args) { System.setProperty("sun.awt.noerasebackground", "true"); new tuval7(); } public ArrayList<Point3d> matrixToPointList(RealMatrix mat) { ArrayList<Point3d> pointList = new ArrayList<>(); double x,y,z; for (int i=0; i<mat.getColumnDimension(); i++) { x = mat.getEntry(0,i); y = mat.getEntry(1,i); z = mat.getEntry(2,i); Point3d point = new Point3d(x,y,z); pointList.add(point); } return pointList; } public RealMatrix pointListToMatrix(Point3d pointListArray[]) { RealMatrix mat = MatrixUtils.createRealMatrix(4,pointListArray.length); double arrayCol[] = {0,0,0,0}; for(int i=0; i<pointListArray.length; i++) { arrayCol[0] = pointListArray[i].getX(); arrayCol[1] = pointListArray[i].getY(); arrayCol[2] = pointListArray[i].getZ(); arrayCol[3] = 1; mat.setColumn(i, arrayCol); } return mat; } public RealMatrix translationM(double tx,double ty, double tz) { double[][] matrixData = { {1,0,0,tx}, {0,1,0,ty}, {0,0,1,tz}, {0,0,0,1}}; RealMatrix mat = MatrixUtils.createRealMatrix(matrixData); return mat; } public RealMatrix rotateX(double fi) { double[][] matrixData = { {1,0,0,0}, {0,FastMath.cos(fi),-FastMath.sin(fi),0}, {0,FastMath.sin(fi),FastMath.cos(fi),0}, {0,0,0,1}}; RealMatrix mat = MatrixUtils.createRealMatrix(matrixData); return mat; } public RealMatrix rotateY(double fi) { double[][] matrixData = { {FastMath.cos(fi),0,FastMath.sin(fi),0}, {0,1,0,0}, {-FastMath.sin(fi),0,FastMath.cos(fi),0}, {0,0,0,1}}; RealMatrix mat = MatrixUtils.createRealMatrix(matrixData); return mat; } public RealMatrix rotateZ(double fi) { double[][] matrixData = { {FastMath.cos(fi),-FastMath.sin(fi),0,0}, {FastMath.sin(fi),FastMath.cos(fi),0,0}, {0,0,1,0}, {0,0,0,1}}; RealMatrix mat = MatrixUtils.createRealMatrix(matrixData); return mat; } public RealMatrix scale(double scale) { double[][] matrixData = { {scale,0,0,0}, {0,scale,0,0}, {0,0,scale,0}, {0,0,0,1}}; RealMatrix mat = MatrixUtils.createRealMatrix(matrixData); return mat; } }