Autor Beitrag
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 27.06.05 18:34 
Ich hab mal eine Frage bzgl. der Berechnung von 3D-Vektoren bei Spiegelungen.

Angenommen, ich hab einen Normalenvektor N einer Ebene (konkrete Ebene uninteressant). Nun möchte ich wissen, wie (Richtungsvektor) ein Vektor A an dieser Ebene gespiegelt wird.

Als Vereinfachung könnt ihr euch Vorstellen alles liegt im Koordinatenursprung.

Ich möchte für die Berechnung des gespiegelten Vektors A' KEINE Winkelfunktionen benutzen; einfach nur reine Vektorberechnungen.

TIA,
BenBE.

P.S.: Falls Ihr noch was an Angaben braucht, einfach bescheidgeben.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Mo 27.06.05 18:37 
Ich weiß zwar, daß ich in Mathe noch n erheblichen Nachholbedarf habe,
aber reicht es nicht die Koordinatenwerte mal - 1 zu nehmen um den Spiegelvektor zu erhalten?

_________________
Stellen Sie sich bitte Zirkusmusik vor.
BenBE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 27.06.05 19:25 
Achtung: Berechnungen im 3D-Raum.

Kleines Beispiel:

Für N=(0,0,1) und A=(1,1,2) wäre der gespiegelte Vektor A'=(1,1,-2).
Probleme gibt es nun, wenn N keine der Koordinatenachsen darstellt, also z.B. N=(0.23,0.77,0.52).

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Mo 27.06.05 19:37 
Wahrscheinlich versteh ich grad nicht worauf du hinaus möchtest.

Wann ein Vektor (1, 1, 2) im dreidimensionalen Raum gespiegelt wird, dann wären
seine gespiegelten Koordinaten (-1, -1, -2) oder seh ich das falsch?

Oder meinst du mit Spiegel z.b. an einer prallelen Achse gespiegelt?

Ich glaube, das einfachste wäre danach zu googln ;)

_________________
Stellen Sie sich bitte Zirkusmusik vor.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 27.06.05 19:42 
Wie ist die Ebene gegeben?

Ist die Ebene ein Unterraum oder ein affiner Unterraum (Ursprung in der Ebene enthalten oder nicht).

z.B. so, wenn die Ebene durch zwei aufspannende Vektoren gegeben ist:
Vektor auf Ebene projizieren, diesen Vektor * 2 minus ursprünglicher Vektor.
BenBE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 27.06.05 19:44 
Spiegelung an Ebene
Diese ist gegeben durch O(0,0,0) und Normalenvektor N dieser Ebene.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 27.06.05 19:53 
v = Vektor
n = Normale (der Länge 1)
w = (an Unterraum senkrecht zu n) gespiegelter Vektor

w erhält man (man zeichne es sich auf), indem man v auf n projiziert, und diesen Vektor 2x vom ursprünglichen Vektor v abzieht:

w = v-2*(v*n)*n (Multiplikationen zwischen Vektoren sind Skalarprodukte)

  ^
  |___v
 n|  /|
  | / |
  |/  |
--O---+------- Ebene
   \  |
    \ |
     \|
      w

Wenn du mehrere Vektoren spiegeln musst, kannst du dir auch eine Spiegelungsmatrix M bauen:
 M = 1-2*(n*n')/(n'*n) falls n nicht normiert ist
bzw.
 M = 1-2*(n*n') falls n normiert ist.
( ' = Transponierte, 1 = Einheitsmatrix)

Dann gilt: w = M*v

Die "Matrixformel" folgt aus der Formel ganz oben, wenn du dort die Einheitsvektoren einsetzst und diese dann wieder ein eine Matrix schreibst (umgekehrte Koordinatentransformation), und diese Matrix dann invertierst (jedoch ist hier die Inverse gerade gleich der Matrix selbst; da zweimal spiegeln so viel wie gar nicht spiegeln ist)

Das ganze funktioniert für beliebige Dimensionen.

Siehe auch meine Zusammenfassung auf Seite 35.