public static boolean linesBetweenPointsIntersectInZPlane(Vector3D a, Vector3D b, Vector3D c, Vector3D d)
	{
		double t = 0.0;
		double u = 0.0;
		Vector3D p = a.clone();
		Vector3D q = c.clone();
		Vector3D r = subtract(b, a);
		Vector3D s = subtract(d, c);
		p.z = 0;
		q.z = 0;
		r.z = 0;
		s.z = 0;
		t = dividePerElement(getCrossProduct(subtract(q, p),s),getCrossProduct(r,s)).z; 
		u = dividePerElement(getCrossProduct(subtract(q, p),r),getCrossProduct(r,s)).z;
		return (t >= 0.0 && t <= 1.0 && u >= 0.0 && u <= 1.0);
	}