Transformationsmatrix gesucht
-
Ja genau, es geht mir immer noch um das Problem aus diesem Thread. Allerdings hatte ich dort leider keine Antworten bekommen.
Das Problem mit den zwei Dreiecken ist ja, dass die Textur dann nicht mehr gleichmäßig über das Viereck gestreckt wird.
Bei der Grafik http://b.imagehost.org/download/0235/Grafik habe ich etwa 200 Dreiecke verwendet.
Gibt es denn keine einfachere Möglichkeit zur Berechnung der Texturkoordinaten des Punktes P (siehe Grafik) als Baryzentrische Koordinaten?
-
Jochen S. schrieb:
..
Das Problem mit den zwei Dreiecken ist ja, dass die Textur dann nicht mehr gleichmäßig über das Viereck gestreckt wird.
..Wieso das denn nicht? Ob ich ein Viereck wähle oder zwei Dreiecke macht doch keinen Unterschied. Du bauchst nichtmal neue Texturkoordinaten berechnen.
-
inter2k3 schrieb:
Wieso das denn nicht? Ob ich ein Viereck wähle oder zwei Dreiecke macht doch keinen Unterschied. Du bauchst nichtmal neue Texturkoordinaten berechnen.
Mit nur 2 Dreiecken würde die Textur nicht gleichmäßig gestreckt. Stell dir dazu mal ein Quadrat aus zwei Dreiecken vor, über das gleichmäßig eine quadratische Textur gelegt wird. Wenn du jetzt einen der Punkte verschiebst, diese Verschiebung allerdings nur ein Dreieck betrifft, wird die Textur auf dem einen Dreieck nach wie vor verzerrungsfrei abgebildet und auf dem anderem Dreieck gestreckt. Es entsteht also ein "Bruch" in der Textur.
-
Jochen S. schrieb:
Gibt es denn keine einfachere Möglichkeit zur Berechnung der Texturkoordinaten des Punktes P (siehe Grafik) als Baryzentrische Koordinaten?
Nein, wie gesagt ist das für Dreiecke zwar einfach aber für alles andere eben leider nichtmehr. Mehr dazu hier und hier...
-
Hm, dann bleibt mir ja gar nichts anderes übrig, es auf diesen Weg zu versuchen.
Danke auf jeden Fall für eure Antworten
-
spontaner Ansatz: wenn du die Geraden deines neuen Rechtecks verlängerst, muss es Schnitpunkte der ehemaligen Paralellen Geraden geben. Dann bilden die Schnittpunkte mit den Geraden jeweils ein Dreieck und die Schnittfläche der Dreiecke dein transformiertes Quadrat.
Damit, und mit baryzentrischen Koordinaten, lässt sich sicher so eine Transformation berechnen.
-
Irgendwie bin ich gerade versucht, deine Signatur zu zitieren...
Wäre nett, wenn du das ein bisschen genauer beschreiben könntest, ich verstehe gerade nicht so genau, was du meinst. Wenn ich die Vierecksseiten verlängere, muss es nicht unbedingt Schnittpunkte geben, das Viereck könnte theoretisch auch ein Parallelogramm sein.MfG, Jochen
-
Hmm im Raum der Projektiven Transformationen hat man immer einen Schnittpunkt...ich müsste mal Aus-X-en ob der bereits ausreicht...morgen ;).
Und wenns keinen Schnittpunkt gibt, dann ist dein Problem eh wunderbar einfach, dann ist dein Objekt nämlich ein beliebig rotiertes Rechteck, und da weißt du ja, wie das geht.
-
So, heute ist ein neuer Tag :).
Ich kam zu folgendem Schluss: im Projektionsraum geht das sogar als Matrixmultiplikation, meine Fachliteratur hat mich darin bestätigt.
Befinden wir uns in 2D und sind 2 Schnittpunkte verfügbar (wobei als Schnittpunkt auch ein unendlicher Punkt funktioniert) so kann man zwischen ihnen eine Linie im Projektionsraum berechnen. ich nenne sie mal L=(L1,L2,L3)dann sieht die Rektifizierungsmatrix so aus:
Also ist A=H*A'. inverse bilden: H^-1*A=A'. Fertig.
Da kein 3D gefordert war, überlasse ich die Verallgemeinerung dem geneigten Leser
Quelle:
Hartley& Zisserman: Multiple View Geometry
-
Hm, das Problem beschränkt sich ja auf 2D. Vielen Dank nochmal für die Antworten,
wenn es noch Probleme geben sollte, kann ich das ja hier reinschreiben. Ich werde mich jetzt wohl erst mal näher mit den Themen beschäftigen.MfG, Jochen