Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#15

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 23:39
Sooo, ich glaube ich habs jetzt

(Da hast du dir was ganz tolles ausgesucht, der Umfang einer Ellipste ist nicht analytisch lösbar - geschweige denn eine Funktion die den neuen Winkel zurückgibt wenn man ihr sagt wie weit man auf dem Umfang weitergehen will )

Ist also nicht mathematisch korrekt, abere ich bin ja (angehender) "Indscheniör" und kein Mathematiker

Anbei also noch ein Beispiel Program:

Start- und Endpunkt sind duch blaue unkte deutlich gemacht

Der Abstand zwischen der Ellipse und den Radiobuttons ist konstant (hier 30px)

Der Abstand zwischen den Radiobuttons ist nahezu konstant und minimal > 50px

Es ist nicht mehr allzu super duper schnell. (Tradeoff: je schneller, desto mehr Toleranz bei dem Abstand untereinander)
(Der winkel wird kontinuierlich um ein epsilon vergrößert, bis der Abstand größer ist als vorgegeben. Je kleiner epsilon, desto genauer aber langsamer ist das ganze)

Nicht gerade trivial, das muss ich dir lassen 8)

Also allgemein kannst du das knicken mit dem "genau berechnen".

Grüße,
Julius

Edit:
Um das mit den SlideButtons und so hab ich mir jetzt mal gespart

Die Hauptschleife sieht mittlerweile so aus:
Code:
*           for(int i = 0; i < buttons.Count; i++)
            {
                buttons[i].Visible = true;
                buttons[i].Location = PointToKoord(a, b, phi, margin); // a und b sind die Daten der Ellipse, phi ist der Winkel
// margin gibt an, wie weit die Buttons von der Ellipse weg sind.
                phi = GetNewPhi(a, b, phi, distance);
// distance gibt den Abstand zwischen den Buttons wieder.
// GetNewPhi berechnet (iterativ) den neuen Winkel, unter dem man dann die nächste Box zeichnen muss.
                if (phi > end_angle)
                    break;
            }
Angehängte Dateien
Dateityp: exe test_1_948.exe (120,0 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat