![]() |
---|
Guten Tag, Mittelpunkt [m], Maximaler Durchmesser [dmax], Minimaler Durchmesser [dmin], Neigung der Ellipsenebene zur z-Achse [zAngle], Ausrichtung der Ellipse zur xy-Ebene [xyAngle], Anzahl der Punkte die auf der Ellipse berechnet werden sollen [count], zeitliches Interval zwischen den Punktberechnungen [interval], callback-Funktion die nach der Berechnung eines jeden Punktes aufgerufen wird [code]. Also: CreateEllipse(mx,my,mz,dmax,dmin,zAngle,xyAngle,count,interval,code) Um [step] wird der Iterator immer erhöht. Nun meine eigentliche Frage: Wie rechne ich all diese Daten um damit ich die 'normale' Parametergleichung einer Ellipse damit füttern kann?
Hoffe ich konnte mein Problem klarstellen und das ihr mir helfen könnt.
MfG Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert): "Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen." |
Hierzu passend bei OnlineMathe: Online-Übungen (Übungsaufgaben) bei unterricht.de: |
![]() |
![]() |
Hi da bisher noch niemand geantwortet hab, geb ich einfach mal ein paar Hinweise. Eine komplette Lösung kann ich dir momentan nicht geben. Dafür müsst ich mich nochmal etwas in das Thema einlesen. Was du machen willst nennt sich Koordiantentransformation. Dazu findet sich einiges im Internet. Unter der "normalen" Ellipsengleichung verstehst du die kartesiche Form ?! Dein zAngle wäre eine Rotation um die x-Achse, der xyAngle eine um die y-Achse. Zumindest soweit ich das verstehe. Dazu kommt noch die Translation. Im Prinzip legst du also ein Koordinatensystem mit einer Ursprungsellipse in das dreidimensionale Ks und rechnest di Koordinaten um. Am Ende hast du dann was in der Art Wobei die Koordinaten der Ellipse im geforderten Ks sind, A die Transformationsmatrix und die Koordinaten der Ursprungsellipse. Um das zu erreichen muss din Programm allerdings die Berechnung trigonometrischer Funktionen beherschen. Hoffe das hilft dir etwas weiter. Grüße |
![]() |
Oh, Entschuldigung. Ich vergaß zu sagen, dass ich von der Parameterform einer Ellipse ausgehe: http//de.wikipedia.org/wiki/Ellipse#Ellipsengleichung_.28Parameterform.29 Ich versuche das mit den Winkeln noch einmal deutlich zu machen: zAngle rotiert die rotiert die Ellipse um die x-Achse und xyAngle rotiert und y-Achse um die z-Achse. Man stelle sich zuerst eine horizontale Ellipse (sprich parallel zu und y-Achse und orthogonal zu z-Achse). Nun ist zB zAngle = 45° und xyAngle 0°, das heißt der östlichste Punkt (0° Osten) wird 45° nach unten und der westlichste (180° Westen) 45° nach oben verschoben. Wäre xyAngle 180° und zAngle = 45° würde der westlichste Punkt nach unten und der östlichste Punkt nach oben verschoben werden. Ist xyAngle 90° so wird der nördlichste Punkt nach unten verschoben.. etc. Mein Programm kann leider nur Basisoperationen und die Gleichung sollte auch relativ schnell zu lösen sein. Ich versuche zu verdeutlichen wie ich mir das ganze denke: loop mx Cos(currAngle) radius my Sin(currAngle) radius currAngle = currAngle step endloop Die obige Schleife generiert alle gewünschten Punkte eines 2-dimensionalen Kreises. loop mx Cos(currAngle)*Abs(Cos(zAngle)) radius my Sin(currAngle)*Abs(Cos(zAngle)) radius mz Cos(xyAngle-currAngle)*Sin(zAngle) radius currAngle = currAngle step endloop Nun habe ich diese um und xy-Angle erweitert. Wie man sieht wird die ,y-Verschiebung (Zeile 2 und schwächer umso horizontaler die Ellipse wird (zAngle gegen 90° oder 270°) während die z-Verschiebung stärker wird. Das Problem an dieser Formel ist, dass wenn zAngle = 90° ist (also der Kreis senkrecht steht) eine gerade Linie nach oben (bzw. unten) entsteht, da die ,y-Verschiebung exakt 0 wird. Es fehlt nur ein paar Faktoren die, die zu extreme Wirkung von cos(zAngle) ausgleichen.. Hoffe es ist nun klarer :-) MfG |
![]() |
Dann habe ich also nur den xyAngle falsch verstanden. Also ich komme momentan auch auf keine Lösung. Bisher schaffe ich es nur die Ellipse im zu drehen und zu verschieben. Mit der dritten Achse wird das ganze wesentlich schwieriger. Ich schreib die mal auf, wie das bei mir im zweidimesionalen aussieht: Original: . . Verschoben: gedreht: Bzw. Ich behaupte mal, dass bei deiner Lösung die Ellipse verzehrt wird. Aber sicher bin ich mir nicht. Hast du mal ein Bild, wie das ganze aussieht? Wie bist du auf diese Formel gekommen? Was hälst du von meinem Vorschlag? Wie man das ganze um eine Dimension erweitern kann, überleg ich mir nochmal. |
![]() |
Also ich komme momentan auch auf keine Lösung. Bisher schaffe ich es nur die Ellipse im zu drehen und zu verschieben. Mit der dritten Achse wird das ganze wesentlich schwieriger :-D), richtig. gedreht: (xy)=(cos(φ)-sin(φ)sin(φ)cos(φ))⋅(x'y') Bzw. x=x'⋅cos(φ)-y'⋅sin(φ) y=x'⋅sin(φ)+y'⋅cos(φ) Interessant! Ich hab jetzt gerade keine Zeit, aber vielleicht hilft mir das weiter, ich setze mich später daran. Ich behaupte mal, dass bei deiner Lösung die Ellipse verzehrt wird. Aber sicher bin ich mir nicht. Ja, die Ellipse wird verzerrt, im Grunde ist genau das das Problem. Hast du mal ein Bild, wie das ganze aussieht? Bilder angehängt, habe es in Wc3 implementiert :-) Wie bist du auf diese Formel gekommen? Naja, ich hab mir gedacht, wenn der Kreis horizontal sein soll (zAngle = 0°) dann ist die Gleichung mz vz genau mz. Also muss vz 0 sein. Also muss das Produkt vz den Faktor Sinus(zAngle) beinhalten. Dieser wird nämlich genau bei zAngle und bei zAngle was ja auch richtig ist, weil beim senkrechten Kreis vz maximal wird. Naja und dementsprechen verringere ich vx und vy durch Cosinus(zAngle) damit genau dann wenn Sinus(zAngle) stark wird (also auch vz), dass dann vx und vy proportional schwächer werden. (Du hast mich übrigens gerade darauf gebracht, dass ja vx und vy ja eigentlich nur um SquareRoot(Cosinus(zAngle)) verringert werden dürfen, sonst wäre es ja nicht proportional) Also ich gehe im Moment übrigens noch vom Kreis aus, das ist einfacher und die Lösung für den Kreis sollte man eigentlich auf die Ellipse übertragen können. |
![]() |
Hallo zusammen, Die Parameterform der Ellipse wäre: mit wobei A eine Drehungmatrix des darstellt. Für Drehungsmatrizen, Winkel usw. kann man hier schauen: http//de.wikipedia.org/wiki/Eulersche_Winkel http//www.itp.tu-berlin.de/menue/lehre/owl/mechanik/euler_winkel/ http//mathworld.wolfram.com/EulerAngles.html http//mathworld.wolfram.com/Rotation.html http//mathworld.wolfram.com/RotationMatrix.html http//www.chemgapedia.de/vsengine/vlu/vsc/de/ma/1/mc/ma_11/ma_11_03/ma_11_03_02.vlu/Page/vsc/de/ma/1/mc/ma_11/ma_11_03/ma_11_03_10.vscml.html |
![]() |
// aus Wikipedia de.wikipedia.org/wiki/Drehmatrix]
kombiniert mit der Ellipsengleichung wäre das:
Also ist das die Lösung? Naja dann werde ich gleichmal versuchen das zu vereinfachen..^^
MfG
|
![]() |
Ja, wenn du um z-Achse und x-Achse drehen möchtest, aber nenne die beiden Drehwinkel nicht . Du kannst die Drehung um die x-Achse mit bezeichnen und die Drehung um die z-Achse mit . Wenn du die beiden nennst und zwischen 0 und 360° laufen läßt, dann dreht sich die Ellipse um den selben Winkel sowohl um die x-Achse als auch um die z-Achse. |
![]() |
Ja, das habe ich zum Glück auch noch bemerkt und habe es geändert. So sieht meine derzeitige Implementierung aus: cosBeta = cos(xyAngle) sinBeta = sin(xyAngle) cosAlpha = cos(zAngle) sinAlpha = sin(zAngle) mx (cosBeta sinBeta my (cosAlpha sinBeta cosAlpha cosBeta mz (-cosBeta sinAlpha sinAlpha sinBeta Aber leider habe ich folgendes Bild: Verändern von xyAngle bringt nichts. Der (von aus gesehen) niedrigste Punkt ist immer nach Osten gerichtet. Verändern von zAngle modifiziert die Ellipse vom perfekten Kreis bis zum Strich. Im Grunde genau wie bei mir vorher nur mit 45° Neigung zur z-Achse. Sehr ihr einen Fehler? MfG |
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.
|