public void rotateAroundAxis(Vector3D rotationAxis, double angle)
	{
		double x = rotationAxis.x;
		double y = rotationAxis.y;
		double z = rotationAxis.z;
		double cos = Math.cos(angle);
		double sin = Math.sin(angle);
		double t = 1 - Math.cos(angle);
		double[][] rotationMatrix =
		{
		{ t * x * x + cos, t * x * y - sin * z, t * x * z + sin * y, 0 },
		{ t * x * y + sin * z, t * y * y + cos, t * y * z - sin * x, 0 },
		{ t * x * z - sin * y, t * y * z + sin * x, t * z * z + cos, 0 },
		{ 0, 0, 0, 1 } };
		rotationMatrix = VectorUtil.transposeMatrix(rotationMatrix);
		double[] result = VectorUtil.multiplyVectorByMatrix(new double[]
		{ this.x, this.y, this.z, 1 }, rotationMatrix);
		this.setTo(result[0], result[1], result[2]);
	}