PDA

View Full Version : [Frage] Transformationen (2)


magic7
22-01-2003, 16:44
Und gleich noch ein Beispiel:

15. März 2002

Unsere Lösung:

T(-4, -2, -4)

Rx(a) (a = "Alpha", b = "Beta")

(in der Matrix steht q für die Wurzel aus 5)
1 0 0 0
0 1/q -2/q 0
0 2/q 1/q 0
0 0 0 1

Ry(b)

q 0 -2 0
0 1 0 0
2 0 q 0
0 0 0 1

Und nun die Spiegelung:

RFz

1 0 0 0
0 1 0 0
0 0 -1 0
0 0 0 1

Dann wieder -Ry(b), -Rx(a), T(4,2,4)
(-R bedeutet R hoch minus 1)


Was habt Ihr für eine Lösung?

Liebe Grüße
-Markus

magic7
22-01-2003, 16:45
Zusatzfrage ist hier, wo eine gleichförmige Skalierung
um den Faktor 2 einzufügen ist - nach RFz ist es sicher
nicht falsch, doch eine gleichförmige Skalierung müßte
doch immer möglich sein, oder?

-Markus

Kenny
22-01-2003, 20:43
so hab ichs auch verstanden... meine schwierigkeit war nur, die rotationsinwkle für das x- und y-alignment zu berechnen?

winkel zwischen x-achse und normalvektor? wie berechnet man einen winkel zwischen 2 vektoren eigentlich?


skalierung hatte ich auch an dieser stelle..

magic7
22-01-2003, 21:11
Zu Deinen Problemen: schau in die Folien, dort definiert
er zur Berechnung u, u', u''. Und schwups kommst zu
meinen Koeffizienten.

Die Frage ist - stimmt das?

Bezüglich Winkel kannst auch mein anderes posting beim
phong-shading anschauen.

Ciao
-Markus

Kenny
23-01-2003, 13:35
danke, habs mir grad angeschaut.. das steht ehsoweit auch im buch!

jetzt hab ichs verstanden!

Cha
23-01-2003, 14:30
Ich versteh noch immer net, wie du auf die Matrizen Rx(a) und Ry(b) kommst, kannst du mir die Rechenschritte aufschreiebn, das wäre toll, danke, karen.

magic7
23-01-2003, 14:52
Ich dreh einfach den Normalvektor, somit hab ich auch die Ebene gedreht.

N = 2,2,1

daraus folgt:

u=a,b,c

u = 2,2,2
u'= 0,2,1

d=|u'|=wurzel(5)

u''=(2,0,wurzel(5))

Wie man das jetzt in Rx, Ry schlichtet, steht auf den Folien/im Buch.

Liebe Grüße
-Markus

Guinness
23-01-2003, 22:57
Wem die Erklärungen im Buch bzw auf den Folien etwas zu schwierig erscheinen, sollte sich diese Seite einmal anschaun:

http://olli.informatik.uni-oldenburg.de/Grafiti3/grafiti/flow2/page1.html

Ziemlich gut - und natürlich auf deutsch - erklärt und nebenbei sind zur Veranschaulichung zu jedem Thema Applets dabei, wo man die ganzen Transformationen per Mausklick vornehmen kann und auch gleichzeitig die Veränderungen in der Matrix sieht.

Ich hab's so leichter verstanden!
Ciao, Guinness!

Cha
24-01-2003, 15:32
@magic7

warum ist u = (2,2,2)?????

Hab noch gar keinen Durchblick.

magic7
24-01-2003, 18:24
Weils ein Tippfehler ist :(

Sorry, u = 2,2,1 !

Liebe Grüße
-Markus

snn
26-01-2003, 18:41
Ist u nicht ganz was anderes - ich muss den Normalvektor doch normalisieren, bevor ich damit projeziere/winkel berechne?!

wrzsef
26-01-2003, 19:35
Das hab ich mir auch schon gedacht: man müsste doch bevor man aus N(2, 2, 1) u mach, N normalisieren:
also aus N(2, 2, 1) wird u(2/3, 2/3, 1/3) da ja magnitude = sqrt(2^2 + 2^2 + 1^2) = 3

zur Berechnung von d wird zwar irgendwie normalisiert, aber dann kann man doch nicht normalisierte Werte mit nicht-normalisierten mischen? oder bin ich da auf dem holzweg?

Kenny
26-01-2003, 19:41
so hab ich auch schon gedacht...

und im buch stehtsauch so

vorher normalisieren, und dann mit a,b,c,d in die matrix einsetzen

aleX
26-01-2003, 19:45
ich glaub, bei den 2d transformationen gelesen zu haben, dass man kombinationen von transformationen immer in der reihenfolge, translation -> rotation -> skalierung durchführen sollte.

wollte nachschlagen, hab's aber nimma gefunden. also betrachtet dies ganz ohne gewähr!

lg, alex

aleX
26-01-2003, 20:26
hab da mal ne frage:

also u = V/|V|
und V = p2 - p1
?

ich weiß ned wie ich den betrag eines vektors bekomm bzw den vektor dann noch durch den betrag dividiere!

wenn's wer weiß kann sich wer kurz die mühe machen und mir des an dem bsp. vom 6.12.02 zeigen.
p1 (1,8,6) p2 (4,6,1)

was ich oben so gelesen habe, haben mehr dieses problem, also bitte schreibst wie des geht.

thanx, alex

Kenny
26-01-2003, 20:29
vektor p1p2 = 3, -2, -5

betrag= wurzel (3² + -2² + -5²)

normalisierter vektor = 3/wurzel , -2/wurzel, -5/wurzel

aleX
26-01-2003, 20:38
thanx kenny! :idea:

Dove
26-01-2003, 20:40
Blöde Frage, aber dafür sicher leichte Erklärung!

wann mach ich Transform, Rotation, ... mit einem - als Vorzeichen, wann mit +???

aleX
26-01-2003, 20:58
was is jetzt eigentlich mit der normalisierung der koeffizienten geworden?

@dove: das - vor einer matrix bedeutet die inversion der + matrix
du verwndest die - matrix zum wiederherstellen der ursprünglichen position bzw. ausrichtung des objekts nach einer transformation.

wenn ich cg erklären versuche möchte ich am liebsten immer am satzende eine fragezeichen anhängen!

alex

Dove
26-01-2003, 21:45
@ alex:
danke! wenn ich also einen punkt in den ursprung verschiebe muss ich T(3,2,4) beispielsweise machen?! hab ich das richtig verstanden???

Jokeman
26-01-2003, 22:42
hat das jetzt schon jemand durchgerechnet mit dem normalisierten u?

und zur skalierung... ich bin der meinung, man muss sie ganz am anfang machen...
da keine koordinaten für unser eigentliches objekt angegeben sind, müssen wir annehmen, dass es sich im ursprung befindet, deshalb müssen wir es sofort skalieren...
ganz sicher nicht, nachdem wir den "spiegel" in den ursprung versetzt haben und sicher auch nicht nach der spiegelung, weil der objektmittelpunkt dann nicht mehr dort ist, wo er sich vor der spiegelung befunden hat...

was meint ihr?

snn
26-01-2003, 23:54
Wegen der Skalierung bin ich mir auch noch nicht ganz sicher. Die betonen im Buch immer das Objekt muss sich im Ursprug befinden, damit sich der Abstand des Objekts vom Ursprung nicht ändert - aber im PO steht nicht, dass uns das überhaupt interessiert.

wolk
27-01-2003, 00:13
unser objekt befindet sich ja im ursprung, deshalb können wir immer skalieren oder ?

andere frage: wie rechnet man die matrix aus (Rotation, translat, sk,) wenn man für die erste translation nur x,y,z und keine werte dafür gegeben hat ?

Jokeman
27-01-2003, 00:30
naja... nicht ausrechnen, sondern die variablen hinschreiben, oder?

immer darf man sicher nichtt skalieren... wir nehmen ja das objekt im ursprung an... aber wenn wir es zum spiegeln irgendwie transformieren, is es ja nimma im ursprung... deshalb muss es meiner meinung nach ganz am anfang skaliert werden

magic7
27-01-2003, 00:40
Hab mir das grad angeschaut, mein Beispiel ist nicht richtig -
wie schon einige bemerkt haben, soll u normalisiert sein!

Liebe Grüße
-Markus

wrzsef
27-01-2003, 01:05
hab das beispiel jetzt mit der normalisierung gerechnet:

a=2/3
b=2/3
c=1/3
d=sqrt(5/9)

somit sehen die matrizen für die beiden rotationen folgendermassen aus:

Rx:
1 0 0 0
0 0,4472 -0,8944 0
0 0,8944 0,4472 0
0 0 0 1

Ry:
0,7454 0 -2/3 0
0 1 0 0
2/3 0 0,7454 0
0 0 0 1


alle anderen schritte bleiben die gleichen...
hat das jemand so oder so ähnlich?

Eine Anmerkung hätte ich noch, da ich anscheinend nicht wirklich begriffen habe um was es da geht..... die aufgabe ist, ein objekt um die ebene mit der normalen N, die gegeben ist, zu spiegeln. Aber nach dem beiden rotationen liegt mein (Normal-)vektor ja genau auf der z-Achse. Wenn ich jetzt um die z-Achse spiegle, hab ich dann (wenn ich alle Schritte wieder rückgängig mache) tatsächlich um diese Ebene gespiegelt? Denn wenn der Vektor, den wie da herumgedreht haben tatsächlich der Normalvektor ist, so befindet sich vor der Spiegelung die tatsächliche Ebene doch nicht entlang der y-Achse - über diese wird aber gespiegelt!!!

ich kenn micht nimma aus, naja, ist eh erst morgen - nein heute(!) Prüfung....

Jokeman
27-01-2003, 01:13
nö... es wird nicht um die z-achse gespiegelt...
es werden alle z-werte invertiert, was bedeutet, dass in der fläche gespiegelt wird... x und y werte bleiben gleich

wenn Du um die z-achse spiegeln wolltest, müsstest Du die x und y werte invertieren