molily: Ellipse

Beitrag lesen

Hallo,

ein Bild soll sich in Form einer Ellipse bewegen.
Deswegen brauche ich eine Formel in PHP,

Den zugehörigen Algorithmus musst du natürlich selbst implementieren, die Formel ist zunächst einmal eine mathematische.

die die Bewegungen der Ellipse in ein Array schreibt,

Dann denke dir zudem einen Algorithmus aus, welche die Schritte auf der x-Achse in einem passenden Verhältnis zur Steigung wählt (die Schritte an den "spitzeren" Enden sollten kleiner sein, aber das Zeitintervall kürzer).

Bei einem konzentrischen Kreis ist es recht einfach, beispielweise:

function rotiere (grad) {
 var vertikale=Math.round(Math.cos(grad*Math.PI/180)*150)+200;
 var horizontale=Math.round(Math.sin(grad*Math.PI/180)*150)+200;
 document.getElementById("murks").style.top=horizontale+"px";
 document.getElementById("murks").style.left=vertikale+"px";
 grad+=2;
 window.setTimeout("rotiere("+grad+")", 10);
}

Mittelpunkt ist AFAIR M(200,200), Radius ist 150px. Wenn du übrigens den Faktor 150 unterschiedlich für Horizontale und Vertikale vergibst, hast du schon deine Ellipse... glaube ich zumindest, ich habe es nur kurz ausprobiert. Eigentlich ist es eine Wurzelfunktion und keine Kreisfunktion, ich weiß gar nicht, ob man Pi benötigt, aber eigentlich... naja. Ich weiß gar nicht mehr, ich hatte anscheinend mit Grad (Bogenmaß?) gearbeitet, nicht mit x-Schritten.

ausgehend von top=320px left=500px.

Mittelpunkt...?

Die Ellipse soll aber nicht von PHP gezeichnet werden.

Naja, unabhängig davon wie nun die Anzeige stattfindet, ist die Ellipsengleichung:

(x^2)/(a^2)+(y^2)/(b^2)=1

a steht für den horizontalen Maximalradius (sicher nennt man es anders) und b für den vertikalen Maximalradius.
Da setzt du schlichtweg deine Werte ein und löst die Gleichung nach y auf.

Bei a=2 und b=4 beispielsweise:
y=2*sqrt(4-x^2)
(Wenn ich mich nicht täusche, dass die 2 und die 4 auch in der aufgelösten Gleichung vorkommen, hat aber glaube ich nicht zu bedeuten, dass sich die Zahlen unverändert "durchschleppen"... wie auch immer, probiere es mit Variablen anstatt konkreten Werten aus.)

Die Drehrichtung würde eine Funktion bestimmen, welche den Array interpretiert... vielleicht solltest du auch mit Grad und beispielsweise 360 Werten arbeiten, du brauchst also schon Trigonometrie. x lässt sich nicht eindeutig auf y abbilden, es ist keine Funktion, sondern nur eine Relation, deshalb müsstest du jedem x-Wert zwei Werte zuweisen.

Grüße,
Mathias
(Rate einmal, welche Note ich in der Mathe-Abiklausur hatte. *flöt* ;) Ich sage es einmal so: du warst mit großer Wahrscheinlichkeit besser, du wirst es also schaffen. :))

--
"Die größten Kritiker der Elche waren früher selber welche"
(Prof. Fritz Weigle alias F. W. Bernstein)
"Wie ein gefoppter Nachtmahr der auf Tücke sinnt..." (Hugo Ball, "Die Katze")