ich bin auf der suche nach einer formel zur berechnung von punkten auf einer elipse, die in einer 800 x 600 großen fläche liegt.
also:
elipse w=700 h=300 mittelpunkt x=400 y=300
ich muss jetzt in 5 schritten die punkte auf dem bogen berechnen können, bis ich einmal „rum“ bin…
kann mir jemand helfen?
tausend danke schöööööhns!
das pi= 3,14 etc is weiss ich.#aber wie erhalte ich pi? was
muss ich durch was teilen damit ich pi ausrechen kann?
mußt du das extra ausrechnen? ich find, auch ein programm, das flash4 heißt, sollte den wert von pi kennen oder wenigstens die definition von konstanten zulassen.
sinus und cosinus kriegst durch potenzreihenentwicklungen raus:
sin(x) = x - x^3/3! + x^5/5! - x^7/7! ± …
cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! ± …
je mehr glieder zu berechnest, umso genauer wird’s.
das pi= 3,14 etc is weiss ich.#aber wie erhalte ich pi? was
muss ich durch was teilen damit ich pi ausrechen kann?
Pi ist eine irrationale Zahl und kann deshalb nicht als Bruch dargerstellt werden. Wenn Du sie unbedingt ausrechnen willst, dann mußt Du den Grenzwert der Reihe
π=Σ{[(4/(8i+1)-2/(8i+4)-1(8i+5)-1/(8i+6)]/16i}
für i von 0 bis ∞ berechnen.
das programm das keine winkel funktionen kann heisst flash4,
flash5 is da angeblich weiter…
Wenn keine Winkelfunktionen zur Verfügung stehen, dann mußt Du es so machen, wie in der Computersteinzeit - mit einer Sinustabelle. Du rechnest zunächst mit einem anderen Programm Sinus und Cosinus für alle Winkel aus, die Du später benötigst un legst sie in einer Tabelle ab. Anstatt die Funktionswerte auszurechnen, holst Du sie später einfach aus der Tabelle. Dafür müßte flash4 aber zumindest den Umgang mit Feldern beherrschen.
Eine Ellipse kann man durch folgende Parametergleichung darstellen:
x²/a² + y²/b² = 1
In deinem Fall wäre a=350 (halbe Breite) und b=150 (halbe Höhe). Diese Formel kann man sehr leicht nach y umstellen:
y1 = +b/a*sqrt(a²-x²)
y2 = -b/a*sqrt(a²-x²)
Wegen dem Ziehen der Wurzel (sqrt) bekommst du für jedes x zwischen -a und +a zwei y-Werte, wie es sich für eine Ellipse ja auch gehört. Jetzt kann man das 1/a noch in die Wurzel einbauen und bekommt:
y1 = +b*sqrt(1-x²/a²)
y2 = -b*sqrt(1-x²/a²)
Das Programm dazu sieht etwa so aus:
1) for (x=-a; x
In 3) und 4) muss der Mittelpunkt addiert werden. Weil für x = a und x= -a die y-Werte y1 und y2 gleich Null sind, kannst du dir für diese Fälle das Plotten des 2-ten Punktes sparen:
4') if (x\>-a && x
Achja, falls deine Sprache auch die Wurzelfunktion sqrt() nicht kennt, kannst du sqrt(1-x²/a²) auch leicht selber ausrechnen. Dazu setzen wir zunächst: y = x²/a², so dass wir uns nur noch um sqrt(1-y) zu kümmern brauchen.
y = x\*x/a\*a; //spart Tipparbeit
w = 1.0; //der Anfangswert fuer die Wurzel
d = 0.5\*y //der erste Korrekturwert
z = 1.0; //zum Bilden der Taylor-Faktoren
while (d\>0.0001) {
w = w-d;
d = d\*y\*z/(z+3.0);
z = z+2.0; }
Danach steht die Wurzel in w. Die Genauigkeit dieser Berechnung kannst du mit der while-Bedingung steuern (d\>0.0001). Dieses Verfahren beruht auf der Taylor-Reihen-Entwicklung
1 1 1\*3 1\*3\*5
sqrt(1-y) = 1 - - y - - y\*y - --- y\*y\*y - ----- y\*y\*y\*y ...
2 4 4\*6 4\*6\*8
Bei uns ist y