move more float to double
change Point/Vector into struct from tuple

tuples aren't equatable. so this makes them more testable. it also makes initalization a little more verbose, however.