public static double[][] scaling3DAnyAxis(double[] axis, double k) {
		double[][] res = new double[3][3];
		if (axis.length == 3) {
			double nx = axis[0];
			double ny = axis[1];
			double nz = axis[2];
			res[0][0] = 1 + (k - 1)*nx*nx; 
			res[1][0] = (k - 1)*nx*ny;
			res[2][0] = (k - 1)*nx*nz;
			
			res[0][1] = (k - 1)*nx*ny; 
			res[1][1] = 1 + (k - 1)*ny*ny;
			res[2][1] = (k - 1)*ny*nz;
			
			res[0][2] = (k - 1)*nx*nz; 
			res[1][2] = (k - 1)*ny*nz;
			res[2][2] = 1 + (k - 1)*nz*nz;
		}
		return toHomogeneousCoordinates(res);
	}