This interface is hardly readable. Who can imagine TemplateVector3(pt1, pt2) actually means pt2-pt1?