Die perspektivische Verzerrung ist aber nicht einfach durch Multiplikation mit einer Matrix zu verwirklichen, weil bei sowas alles linear bleibt (strecken, drehen, u.s.w.).
Du musst am Ende (nach der Projektion auf die "BildEbene") noch jeden Punkt (x, y) ans Bildzentrum (Blickpunkt) ranrücken, je nachdem, wie weit er vom Betrachter entfernt ist (z).
also: (pseudo)
Code:
canvas.x := canvas_mitte.x + (punkt.x - blickpunkt.x) / punkt.z;
canvas.y := canvas_mitte.y + (punkt.y - blickpunkt.y) / punkt.z;
dann kannst du etwas rumprobieren, wie gut das mit dem z klappt. Eventuell sollte du das Ganze noch etwas skalieren (in z-Richtung) damit es schön aussieht. Je weiter deine Kamera vom Gegenstand weg sein soll, desto mehr ist in z-Richtung zu stauchen.
€: ein paar "musstu" hab ich weggemacht. sah nicht nett aus