Formel zur berechnung von punkten auf einer elipse

hallo liebe mathe kräxx!

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!

gruß
herpes

meinst du sowas:

mitte\_x = 400
mitte\_y = 300
breite = 400
hoehe = 300

for (z1=0;z1

wie rechne ich pi aus???
ja fast!
tausend dank!
ich habs jetzt so gedacht:

x= 350 *cos pi/20 + 350
y= 300 *sin pi/20 -300

aber wei rechne ich pi aus?
und cos un sin?

das programm das ich verwenden muss kann die drei zahlen nicht selber berechnen…

danke!
herpes

aber wei rechne ich pi aus?

Pi ist kein Problem: =3,141592653589793…

und cos un sin?

Das wird schwieriger.

das programm das ich verwenden muss kann die drei zahlen nicht
selber berechnen…

Welches Programm ist es denn? Ich kann mir kaum vorstellen, daß es keine Winkelfunktionen kennt.

hallo mr.stupid

das pi= 3,14 etc is weiss ich.#aber wie erhalte ich pi? was muss ich durch was teilen damit ich pi ausrechen kann?

das programm das keine winkel funktionen kann heisst flash4,
flash5 is da angeblich weiter…

gruß
herpes

hi,

for (z1=0;z1

hallo mr.stupid

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.

gruß

michael

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.

du brauchst pi nicht berechnen, weil dir ein naeherungswert von 3.1427 ausreicht…

kommt darauf an, welche werte deine winkelfunktionen erwarten…

why not

Also mal ohne sin() oder cos()
Hi Herpes :smile:

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