public static double getAngleInXPlane(final Vector3D a, final Vector3D b)
	{
		double cosine = 1.0;
		double length = (a.lengthInXPlane() * b.lengthInXPlane());
		if(length > 0.0000000001)
			cosine = (a.y * b.y + a.z * b.z) / length;
		// rounding errors might make dotproduct out of range for cosine
		if(cosine > 1)
			cosine = 1;
		else if(cosine < -1)
			cosine = -1;

		if((a.y * b.z - a.z * b.y) < 0)
			return Math.acos(cosine);
		else
			return -Math.acos(cosine);
	}