TODO
----
Write a proper test suite, to check that it hasn't been broken if modified.
Memoize range function as it can be expensive.
Include some sort of polygon range, or combined ranges
TODO
----
Write a proper test suite, to check that it hasn't been broken if modified.
Memoize range function as it can be expensive.
Include some sort of polygon range, or combined ranges