Given everything that D offers, what would be the best way to implement a Point and a Vector type?  The same (x, y, z) can be used to represent vectors, but a point represents a position, whereas a vector represents a direction.  So, would you define two different structs for each? or define and implement an interface?  a fixed array or POD members?