C# Projektive Transformation

Einhörnchen

Rear Admiral
Registriert
März 2007
Beiträge
5.170
Kennt jemand zufällig einen Algorithmus für eine projektive Transformation? In .NET 2 sind von Haus aus (ohne DirectX) nur affine Transformationen möglich, ich möchte mein Bild jedoch kippen.
 
Ich habe zwar keine Ahnung wovon du genau sprichst, aber wenn du ein Bild kippen willst, gehst du einfach hin, und machst folgendes für jeden Pixel:
Koordinaten des Pixels und die des Pixels ganz unten links (Vorausgesetzt du willst auf der Ecke kippen) nehmen, in eine 2-Punkt-Form Gleichung einsetzen und die lineare Funktionsgleichung dieser berechnen, daraus den Steigungswinkel und die Streckenlänge berechnen. Dann eine neue lineare Gleichung ermitteln mit dem Punkt ganz unten links und dem gewünschten Kippwinkel, dem du der Steigung der ersten Gleichung dazurechnest. Dann die Koordinaten des neuen Punktes mit der neuen Gleichung und der Streckenlänge (Also der Abstand zwischen den beiden Punkten) ausrechnen. So müsstest du die Koordinaten des neuen Punktes im Pixel-Array hinbekommen.
Ich hoffe du hast alles verstanden was ich gerade geschrieben habe und ich konnte dir weiterhelfen.:)
 
@Cyba_Mephisto: Vielen Dank für die Infos!

@ichhalt123: Besagter Artikel beschreibt leider nur affine Transformationen :(

So wie es aussieht sind projektive Transformationen erst ab .NET 3.5 (WPF) mit Boardmitteln möglich, davor nur via DirectX oder Eigenprogrammierung :(.
 
oke, hab mich damit nicht wirklich auseinandergesetzt
 
Mir ist aufgefallen, dass so kompliziert mit der 2-Punkt-Form usw. muss das garnicht sein, du musst es nur für den ersten Pixel machen und diese Verschiebung auf alle anderen anwenden, da sie ja genau gleich bewegt werden.
 
Ich glaube nicht, dass das ausreicht, da bei dieser projektiven Transformation ja eine Verzerrung/Streckung stattfindet, d.h. Interpolation usw. muss ebenfalls berücksichtigt werden und viele der alten Pixel gibt es dann nicht mehr.
 
Zurück
Oben