Ohohoh schick schick, find ich gut . Besonders Polygon & .Contains. Sehr praktisch. Was du noch machen könntest wäre eine Überladung mit .Contains(Point, Matix3x3). Und vielleicht die Klassen noch mit .TranslatePoints/Vectors(), .Skew(), .Mirror() (ggf. noch Zoom()) ausstatten.
Ich würde zum Invertieren der Matrizen auch feste Templates nehmen oder zumindest noch eine Methode InvertFast hinzufügen. Aktuell ists relativ langsam.
Kannst dir ja mal angucken wie GCL das macht, braucht keine ms. Für Matrizen mit fester Größe schwirren iwo fixe Vorlagen rum. Ansonsten nach Gauss-Jordan. (Versteckter Text) Sofern Determinante != 0.
Rein von der Logik her ist Matrix für mich eine Struct. Die beinhaltet nur die Felder der Matrix und Funktionen die diese manipulieren oder Auskunft drüber geben. Imho wie ein Point.