ART has no purpose, but this is mostly rational.
By rational I don't mean that this library actually uses rationals Q=Z/(Z-{0}), but rather uses the double/(double-{0}) as accurately as possible.
The idea is that division is evil so we should try to stick to homogeneous-like coordinates as much as possible.