B
Wenn du die Abbildung von zwei nicht parallelen (am besten orthogonalen aber nicht notwendig) Vektoren kennst dann kannst du das Umrechnen der Koordinaten mit der Hilfe einer Matrix und einer Verschiebung machen.
Ich würde einfach noch 3 weitere Punkte einführen : blau, schwarz und grün. Von oben gekuckt ist der schwarze Punkt dein Zentrum und der grüne ist auf Distanz 1 (Einheit kannst du wählen) nach oben. Der blaue auf Distanz 1 nach rechts. Kannst also wenn du die 3 Punkten kennst ein Axenkreuz malen.
Von der Seite gekuckt bestimmst du erst einmal die Positionen der 4 Punkte auf der Kamera. Sei P dein roter Punkt, B blau, O schwarz und G grün.
Ohne ' sind es Koordinaten auf der Kamera und mit auf dem Blatt. Ich gebe den Koordinaten mal Namen:
P(x_p, y_p) -> P'(x, y)
O(x_o, y_o) -> O'(0, 0)
B(x_b, y_b) -> O'(1, 0)
G(x_g, y_g) -> O'(0, 1)
Als erstes ziehst du von P O ab damit beide Zentren übereinstimmen. Das Resultat ist P*(x_p - x_o, y_p - y_o).
Seien i(x_b-x_o, y_b-y_o) und j(x_g-x_o, y_g-y_o) deine Einheitsvektoren.
Die Matrix
|x_b-x_o x_g-x_o|
|y_b-y_o y_g-y_o|
bildet also P' auf P* ab falls rechts-multipliziert. Wir wollen aber die andere Richtung also berechnen wir das Inverse
|y_g-y_o x_o-x_g|
|y_o-y_b x_b-x_o|
So nun sind wir eigentlich fertig:
x = (y_g - y_o) * (x_p - x_o) + (x_o - x_g) * (y_p - y_o)
y = (y_o - y_b) * (x_p - x_o) + (x_b - x_o) * (y_p - y_o)
Um bessere Resultate zu erhalten würde ich die Einheit möglichst groß wählen. Das sollte am genausten werden. Du kannst am Ende ja einfach nochmal skalieren wenn Kommazahlen dich stören.
PS: Das ganze ist ohne Gewähr.