Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mathe - Suche eine Formel für "Biegung"



noRkia
10.09.2009, 23:18
eine spirale um die X achse gegeben durch:

R(x) = (sinx,cosx)

wobei dies ein kreis mit radius 1 ist wenn man sie in die y,z ebene projeziert.
ein skalar wie e^(0,5x) führt dann noch zur veringerung des radius mit zunehmendem x und eine vertauschung von den koordinaten der ergebnises bzw ein vorzeichenwechsel in einer koordinate ändert die drehung um 90 grad um die x achse oder invertiert die drehrichtung.

das alles viel mir gestern einfach zufällig ein.

angenommen wir wollen die funktion f(x) = (0,x³) im R³ plotten.
dann ist das einfach x³ aber eben verlaufen in der x,z ebene.
dann haben alle punkte/ortsvektoren von punkten des graphes die form v=(x,0,x³) klar.
nun soll dies um die z achse gedreht werden.
dazu nimmt man einfach eine drehmatrix aus SO(3) die den vektor v entsprechend dreht und erhält so alle punkte.
man kann dann noch die erste komponente nach x auflösen,das dann in die anderen einsetzen und hat dann die formel für den selben graph nur eben gedreht.

nun das problem:

ich will die formel einer spirale die nur von x abhängt und die quasi der funktion f(x) = (0,x³) folgt,finden.
mit anderen worten soll die spirale die am anfang definiert worden ist so gebogen werden das sie im mittel den graph zu f um kreist.
sie wird also um eine gegebene funktion drumgewickelt.

was klar ist das wenn der radius der spirale gegen 0 läuft,man genau die gegebene fuinktion erhält.das verkompliziert es aber irgendwie noch ;(

ich glaube das es keine so einfache formel gibt sondern das es wohl eine abbildung ist die jeden ergebnis vektor irgendwie mit einer drehmatrix die von R(x) abhängt mal nimmt.
was meint ihr?

TheBiber
11.09.2009, 09:51
Klingt recht kompliziert, ich denke, man braucht eine Koordinatentransformation, welche die x-Achse auf x³ projeziert.

Eine Spirale, die sich um die x-Achse wickelt lässt sich ja beispielsweise parametrisieren als: R(x) = (x, sin(x), cos(x)), du willst jetzt aber, dass sich eine solche Spirale um den kubischen Parabelbogen z(x) = (0,x³), oder parametrisiert v(x) = (x,0,x³), wickelt. Ehrlich gesagt bin ich da ziemlich überfordert. :D

Eine einfache Formel wird es wohl kaum geben, ich denke, du musst dir eine Matrix suchen, welche die Koordinatentransformation (x,y,z) -> (x,0,x³) durchführt, und dann R(x) in diese neuen Koordinaten umrechnen. Leider bin ich nicht mehr so fit darin, weshalb ich dir die Übung gerne selbst überlasse, falls die Idee stimmen sollte. ;)

noRkia
11.09.2009, 18:24
also was das ganze so schwer macht ist das man keine kontrollmöglichkeit hat.
ausserdem punkt bei x = 0,der ja seine position nicht verändern kann wiel x³ und x bei x=0 alle 0 sind,geht es nicht ;/

Ineluki
02.10.2009, 14:21
Hm .. das sollte doch gar nicht sooo schwer sein ...

Dein Ansatz mit den Rotationsmatrizen ist gar nicht so falsch.

Im Grunde ist deine Spirale doch nichts anderes, als eine Kreisbewegung in einem bewegten Koordinatensystem.

Nehmen wir an, du hast eine eindimensionale Kurve f(t)={x(t),y(t),z(t)}.
Dann kannst du eine Transformation relativ zur Kurve so betrachten, dass du einen Punkt hast, der Ortsfest im Ursprung liegt, dessen Koordinatensystem aber von t abhaengt. Du verwendest also eine von t abhaengige Translationsmatrix, die {0,0,0} auf {x(t),y(t),z(t)} abbildet.

Wenn du nun deine Spirale in der y,z Ebene um die Funktion kreisen lassen willst, muessen wir zusaetzlich die Basisvektoren drehen. Das geht folgendermassen: Zuerst bestimmen wir den Gradienten von f bezueglich t

g = grad f = d/dt f = { dx(t)/dt, dy(t)/dt, dz(t)/dt }

Das ist also ein Vektor, der uns anzeigt, wohin die Funktion als naechstes laufen wird, die Tangente zum "Zeitpunkt" t. Wenn wir nun g normieren, haben wir den neuen Einheitsvektor x(t). Wir muessen also eine Rotationsmatrix verwenden, die {1,0,0} auf das normierte g abbildet. Die anderen beiden Basisvektoren y und z werden einfach mitgedreht. Da es sich um eine Rotationsmatrix handelt, bleibt ihre Orthogonalitaet gewahrt. Allerdings ist diese Rotationsmatrix noch nicht vollstaendig definiert, da sie noch nicht spezifiziert, wie die transformierte Richtung von y und z im Raum ist. Dies sollte sich allerdings dadurch beheben lassen, dass man als weitere Bedingung annimmt, dass das Skalarprodukt von y * R(t) y maximiert wird.

Wir haben nun also eine Rotationsmatrix R(t) und eine Translationsmatrix T(t). Nun brauchen wir eigentlich nur noch den Kreisvektor v(t) = {0, sin(t), cos(t)} zuerst translatieren und danach rotieren, und wir haben den Funktionsvektor s(t), den du wolltest:

s(t) = R(t) T(t) v(t)

Wenn du nun die Matrixmultiplikationen ausfuehrst, erhaellst du eine statische Funktion in Abhaengigkeit von t.

Eine andere Herangehensweise waere folgende:

Eine Kreisbahn senkrecht zum Vektor g ist wie folgt definiert: v * g = 0, ||v|| = R. Alle Vektoren v der konstanten Laenge R, die senkrecht auf g stehen Bilden eine Kreisbahn. Wir haben also die Gleichungen:

v * v = R*R
v * g = 0

Vektor g ist wie gehabt der Gradient von f zum Zeitpunkt t. Noch ist der Mittelpunkt der Kreisbahn der Koordinatenursprung. Soll er Punkt p in der Mitte der Kreisbahn liegen, so ist p zu v hinzuzuadieren. Unsere Kreisbahn hat also die Funktion k = v + p. Man sieht bereits, fuer R -> 0 geht k -> p.

Allerdings ist v bisher nicht vollstaendig bestimmt, denn wir haben 2 Gleichungen und drei unbekannte, naemlich die Komponenten von v. Wir brauchen noch eine dritte Information, um den Vektor v eindeutig zu beschreiben. Hierzu verwenden wir den Winkel zu einem externen Einheitsvektor q, welcher ebenfalls in der Kreisebene liegt. dann gilt: v * q = R * sin alpha. Alpha ist der drehwinkel, und wir koennen, wie in deinem obigen Fall ihn einfach mit t gleichsetzen, und erhalten als dritte Gleichung v * q = R sin(t).

doch was ist q ? Das koennte z.B. die y Achse projeziert in die Kreisebene sein. Das Problem ist nur, wenn g selbst parallel zur y Achse ist. Dann ist die Projektion der Nullvektor. Das ist das selbe Problem, wie in obigen Fall, wo die Rotationsmatrix R(t) nicht eindeutig durch die Abbildung von x auf g definiert ist.

Kannst du allerdings annehmen, dass sich die Funktion f(t) nur in 2 Dimensionen bewegt und in der dritten maximal eine Linearfunktion ist, so kannst du als Bezugsvektor getrost die Projektion der unveraenderlichen Dimension benutzen, da der Gradient in dieser Richtung immer eine Konstante ist, z.B. q = Normale ( {0, 0, dz(t)/dt} ), falls dz(t)/dt eine Konstante ist.

Damit hast du dann alle Informationen, die du brauchst, und kannst das Gleichungssystem loesen. Setzt du nun fuer p f(t) ein, hast du mit k(t) die Funktionskurve deiner Spirale.

Da deine Funktion f(t) = {t,t^3,0} sein soll, ist letzterer Ansatz mit der Bewegung in 2 Dimensionen gegeben, und du kannst q = z setzen.