Article View: de.sci.informatik.ki
Article #18Re: Berechnung des Spiegelbildes eines Objektes
From: Horst Kraemer
Date: Mon, 07 Dec 1998 00:00
Date: Mon, 07 Dec 1998 00:00
82 lines
3430 bytes
3430 bytes
On Mon, 7 Dec 1998 16:09:59 +0100, "Hendrik Bohn"
<bohn@informatik.uni-rostock.de> wrote:
> ich habe hier einen Algorithmus, um das Spiegelbild (an einer Geraden) eines
> Objektes zu berechnen. Ich gehe von den Eckpunkten des Objektes aus und
> berechne das Spiegelbild des Punktes an der Geraden.
> Aber irgendwie funktioniert das nicht. Vielleicht findet jemand von Euch den
> Fehler oder eine bessere L�sung.
>
> Gegeben ist der Punktvektor (x;y) und die beiden Punktvektoren (Sx1;Sy1) und
> (Sx2;Sy2), die die Spiegelgerade bilden.
Es gibt viele Loesungen. Die imho einfachste und lehrreichste ist die,
das Problem zunaechst auf den Spezialfall zu reduzieren, wo S1 der
Ursprung und der Richtungsvektor S1->S2 ein Einheitsvektor ist.
Sei gegeben (u,v) und ein Einheitsvektor (c,s). (u,v) sei an (c,s) zu
spiegeln.
Fuer den Zielvektor (u',v') gilt einerseits, dass (u'-u,v'-v) auf
(c,s) senkrecht steht und andererseits, dass (u+u',v+v') und (c,s)
parallel sind. Dies fuehrt zu zwei linearen Gleichungen mit (u',v')
als Unbekannten
c*(u'-u) + s*(v'-v) = 0
-s*(u'+u) + c*(v'-v) = 0
(Die letzte Gleichung bedeutet dass (u'+u,v'+v) auf (-s,c) senkrecht
steht, dieser steht wiederum auf (c,s) senkrecht. )
Macht zusammen
cu' + sv' = cu + sv
-su' + cv' = su - cv
Aufgeloest nach (u',v') unter Beachtung von c^2+s^2=1
u' = (c^2-s^2)*u + 2cs *v
v' = 2cs *u - (c^2-s^2)*v
Das ist die "Spiegelformel" am Einheitsvektor im R^2.
Sie hat bereits eine interessante Anwendung: Wenn (u,v) ein
Richtungsvektor ist, der die gradlinige Bewegung eines Punktes angibt,
so ist (u',v') ein Richtungsvektor (gleichen Betrages) nach
"Abprallen" des Punktes an einer Wand mit Richtungsvektor (c,s).
Um das allgemeine Problem zu loesen, ersetzt Du einfach in der obigen
Formel
u' durch x' - Sx1
v' durch y' - Sy1
u durch x - Sx1
v durch y - Sy1
Sx2-Sx1
c durch -------------------------
(Sx2-Sx1)^2 + (Sy2-Sy1)^2
Sy2-Sy1
s durch -------------------------
(Sx2-Sx1)^2 + (Sy2-Sy1)^2
und fertig. Also
x' = (c^2-s^2)*(x-Sx1) + 2cs *(y-Sy1) + Sx1
y' = 2cs *(x-Sx1) - (c^2-s^2)*(y-Sy1) + Sy1
Die Transformation bedeutet gemetrisch, dass Du alles so verschiebst,
dass S1 in den Ursprung verlegt wird, das Problem in Koordinaten
relativ zu S1 als Ursprung geloest wird und das Resultat wieder um S1
zurueckverschiebst.
MfG
Horst
Technical Details
Message-ID:
<366c041f.338259710@news.snafu.de>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<366bf124.0@news.uni-rostock.de>Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII X-Google-Thread: 113080,ff77598cbd9c3a0e X-Google-Attributes: gid113080,public X-Google-Thread: 102c5b,ff77598cbd9c3a0e X-Google-Attributes: gid102c5b,public X-Google-Thread: 113dff,ff77598cbd9c3a0e X-Google-Attributes: gid113dff,public X-Google-Thread: 1102ea,ff77598cbd9c3a0e X-Google-Attributes: gid1102ea,public X-Google-Thread: f4da7,ff77598cbd9c3a0e X-Google-Attributes: gidf4da7,public From: horst.kraemer@snafu.de (Horst Kraemer) Subject: Re: Berechnung des Spiegelbildes eines Objektes Date: 1998/12/07 Message-ID: <366c041f.338259710@news.snafu.de> X-Deja-AN: 419688899 References: <366bf124.0@news.uni-rostock.de> Organization: [Posted via] Interactive Networx Newsgroups: de.sci.informatik.ki,de.sci.informatik.misc,fido.ger.informatik,maus.sci.informatik,z-netz.wissenschaft.informatik