Die einfachste Lösung, nämlich (-y,x,0), wenn (x,y,z) der
Originalvektor ist, wird 0, wenn (x,y,z) = (0,0,1). Vektoren dieser
Bauart zu addieren, z.B. (-z,-z,x+y) oder (y-z,z-x,x-y), hilft auch
nichts. Hier ist das Problem (1,-1,0) bzw. (1,1,1).
Der Ausdruck soll nach Möglichkeit keine Wurzeln oder Divisionen
enthalten. Wenn-danns schon gar nicht. Das wär ja auch einfach. Ich
möchte das Ding dann nämlich noch differenzieren können.
Zusatzaufgabe: wenn dabei noch ein dritter Vektor anfiele, der normal
auf die anderen beiden steht und die gleiche Länge wie der gesuchte
hat, wär das ganz toll.
Ich hab mir das Gehirn zermartert und komm auf nichts. Geht das etwa
gar nicht?
Rade
> Ich hab mir das Gehirn zermartert und komm auf nichts.
Klar! Du suchtst eine Konstante, die von einer Variablen abhägt,
also eine _variable_ _Konstante_.
Die gibts nicht!
MFG Joachim
--
Joachim Mohr, Tübingen
www.joachimmohr.de
Lektionen zu Delphi Vektoren und Musiktheorie
Normalen sind normalerweise nicht fuer Vektoren definiert, sondern fuer
Flaechen..
Gruss,
Flo
--
Palimm Palimm!
http://tapas.affenbande.org
In news:<etvvrq$tvh$02$1...@news.t-online.com>
schrieb Joachim Mohr <jomo...@web.de>:
> Rade Kutil schrieb:
>> Ich suche einen stabilen Ausdruck für einen Normalvektor zu einem
>> Vektor im 3D. Stabil in dem Sinn, dass er nicht 0 wird, egal wo der
>> Originalvektor hinzeigt.
>>
>> Die einfachste Lösung, nämlich (-y,x,0), wenn (x,y,z) der
>> Originalvektor ist, wird 0, wenn (x,y,z) = (0,0,1). Vektoren dieser
>> Bauart zu addieren, z.B. (-z,-z,x+y) oder (y-z,z-x,x-y), hilft auch
>> nichts. Hier ist das Problem (1,-1,0) bzw. (1,1,1).
>
>> Ich hab mir das Gehirn zermartert und komm auf nichts.
Das liegt wahrscheinlich daran,
dass Du versucht hast, eine *stetige* Zuordnung zu finden,
also zu jedem Vektor X in R^3 \ { (0,0,0) }
einen anderen Vektor F(X) in R^3 \ { (0,0,0) },
der auf X senkrecht steht,
so dass eine kleine Aenderung von X
auch nur eine kleine Aenderung von F(X) ergibt.
Solch eine *stetige* Abbildung F *gibt es nicht*,
nicht einmal, wenn man sich mit X
nur auf die Einheitsvektoren
S^2 = { (x,y,z) in R^3 : x^2 + y^2 + z^2 = 1 }
beschraenkt.
Grund ist, dass in jedem Punkt X der Einheitssphaere
der Vektor F(X) in eine Richtung *tangential* an die Sphaere
zeigen muss. - Das ist die Konsequenz des Senkrechtstehens.
Mit anderen Worten:
F ergaebe auf der Einheitssphaere ein nichtverschwindendes
*Vektorfeld* (tangential an die Sphaere).
Dummerweise sagt ein Satz der Topologie (der "Igelkaemmsatz"(?)),
dass es solch ein Vektorfeld nicht gibt.
Der topologische Name fuer dieses Phaenomen ist,
dass die Sphaere S^2 *Eulercharakteristik* 2 hat;
aber,
damit ein *nirgends verschwindendes* Tangentialvektorfeld
auf ihr existieren koennte, muesste ihre Eulercharakteristik 0 sein.
Das ist nicht nur in Dimension 3 so,
sondern in jeder ungeraden Dimension,
weil alle geraddimensionalen Sphaeren Eulercharakteristik 2 haben
(waehrend ungeraddimensionale Sphaeren Eulercharakteristik 0 haben).
Wenn Du also eine Zuordnung F suchst,
so muss sie auf jeder Sphaere um (0,0,0) in R^3
mindestens eine Unstetigkeitsstelle haben.
Das von Dir oben angegebene Feld
(x,y,z) |--> (-y,x,0) falls (x,y) =/= (0,0) ist
hat auf jeder Sphaere zwei Unstetigkeitsstellen (0,0,1) und (0,0,-1),
ist also schon "recht gut", aber nicht ganz "optimal".
Vielleicht wirst Du bemaengeln, dass,
wenn man bei dieser Zuordnung mit den Vektoren (x,y,z)
an die z-Achse herankommt, die Laenge von (-y,x,0) gegen Null geht.
Das liesse sich nur aendern, wenn man die Zuordnung
auf einem groesseren Gebiet jeder Sphaere unstetig macht.
Zum Beispiel koennte man versuchen, eine Zuordnung F
zu finden, die sich aus zwei stetigen Teilen zusammensetzt -
einem definiert auf allen (x,y,z) mit z > 0
und einem definiert auf allen (x,y,z) mit z < 0:
(z, 0, -x) fuer z >= 0 und (x,z) =/= (0,0)
F : (x,y,z) |-->
(0, z, -y) fuer z > 0 und (y,z) =/= (0,0)
und fuer (x,y,z) = (0,y,0)
> Klar! Du suchtst eine Konstante, die von einer Variablen abhägt,
> also eine _variable_ _Konstante_.
> Die gibts nicht!
???
> Die einfachste Lösung, nämlich (-y,x,0), wenn (x,y,z) der
> Originalvektor ist, wird 0, wenn (x,y,z) = (0,0,1). Vektoren dieser
> Bauart zu addieren, z.B. (-z,-z,x+y) oder (y-z,z-x,x-y), hilft auch
> nichts. Hier ist das Problem (1,-1,0) bzw. (1,1,1).
>
> Der Ausdruck soll nach Möglichkeit keine Wurzeln oder Divisionen
> enthalten. Wenn-danns schon gar nicht. Das wär ja auch einfach. Ich
> möchte das Ding dann nämlich noch differenzieren können.
>
Also (x,y,z) ungleich Nullvektor gegeben. Dann stehen alle Vektoren
(u,v,w) ungleich Null senkrecht zu ihm, wenn das Skalarprodukt aus
beiden Null wird.
a*u + b * v + c * w = 0. Diese bilden eine ganze Ebene ( von einem
Punkt aus abgetragen) und zu dieser steht (x,y,z) normal (d.h. er ist
in keine Richtung zu dieser Ebene geneigt).
Die Lösung ist also:
ist a = 0 wähle u =1, ist b=0 wähle v=1 und falls c= 0 ist wähle w =1.
Damit ist mindestens eine Komponente von ( u, v, w ) ungleich Null.
Ausserdem muss gelten:a*u + b * v + c * w = 0.
> Zusatzaufgabe: wenn dabei noch ein dritter Vektor anfiele, der normal
> auf die anderen beiden steht und die gleiche Länge wie der gesuchte
> hat, wär das ganz toll.
>
Das Vektorprodukt aus (x, y, z ) und ( u, v, w ) steht senkrecht auf
beiden.
Welche Länge Du suchst, ist mir unklar, aber man kann jeden Vektor
durch seine Länge sqrt( a² + b² + c² ) dividieren.
Mit freundlichen Grüssen
Hero
Aja!! *aufdenkopfhau*
> Zum Beispiel koennte man versuchen, eine Zuordnung F
> zu finden, die sich aus zwei stetigen Teilen zusammensetzt -
So irgendwas werd ich machen müssen, ja. Muss ich mir noch überlegen.
Danke für die Erklärungen.
Rade