Laden...

Kreispunkte berechnen

Erstellt von wiesi vor 17 Jahren Letzter Beitrag vor 17 Jahren 24.093 Views
wiesi Themenstarter:in
89 Beiträge seit 2005
vor 17 Jahren
Kreispunkte berechnen

Hi,

ich bräuchte einen Algorithmus, besser vielleicht sogar noch eine Lib 😉,
mit der ich bestimmte Kreispunkte berechnen kann.

Mein Fall: Ich will Tortendiagramme berechnen und brauche zu einer
Prozent-Angabe die entsprechenden x,y-Koordinaten der zweiten Achse
(die erste Achse ist mir bekannt da Startpunkt). Das Problem dabei ist,
daß die Punkte nicht anhand des Radius und des Winkels berechnet werden
können, sondern die Punkte frei im Koordinaten-System errechnet werden
müssen. Ich benutze zur Darstellung SVG, wo man bei Kreissegmenten keinen
festen Radius einstellen kann.

Weiß jemand Rat, oder muß ich mir die Arbeit selbst machen?
Ich habe ähnliches HIER gesehen.

Danke schonmal ...

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo wiesi,

Das Problem dabei ist, daß die Punkte nicht anhand des Radius und des Winkels berechnet werden können, sondern die Punkte frei im Koordinaten-System errechnet werden müssen.

Radius und Winkel (= Polarkoordinaten) lassen sich leicht in Punte (= kartesische Koordinaten) umrechnen. Siehe http://de.wikipedia.org/wiki/Polarkoordinaten

herbivore

wiesi Themenstarter:in
89 Beiträge seit 2005
vor 17 Jahren

👍 Ist schonmal nicht schlecht, hats jemand schon programmiert? 😁

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo wiesi,

was gibt es da groß zu programmieren? Im Abschnitt "Umrechnung zwischen Polarkoordinaten und kartesischen Koordinaten" steht doch der Satz "Polar zu kartesisch lässt sich demnach folgendermaßen umrechnen:" und darunter genau, was zu schreiben musst. Das sind nur zwei Zeilen und es ist ja schon fast Programmcode.

ich bräuchte einen Algorithmus, besser vielleicht sogar noch eine Lib

Da sind die Begriffe Algorithmus und erst recht Lib schon ziemlich überdimensioniert für. 🙂

herbivore

S
1.047 Beiträge seit 2005
vor 17 Jahren

wie kann man denn in .net nur kreisfragmente zeichnen?

also sozusagen ein so ein tortenstück

ah habs gefunden: DrawPie

564 Beiträge seit 2006
vor 17 Jahren

Hi!

Das ist eigentlich nur grundlegende Mathematik:

für die x-Koordinate im kartesichen Koordinatensystem (p ist der Prozentwert in Form von 0 bis 1, r ist der Radius des Diagramms):
x(p)=rcos(p2PI)
y(p)=r
sin(p2PI)

du musst x(p) und y(p) nur noch in Bildschirmkoordianten umrechnen und schon hast du es.

Viele Grüße 🙂

Der Marcel

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

wiesi Themenstarter:in
89 Beiträge seit 2005
vor 17 Jahren

Herzliches Dankeschön! 😉

Ich benutze übrigens SVG (Vektorgrafiken, definiert durch XML), also nicht
direkt C#. Aber ich wußte doch daß hier Vollprofis sind! 😉

wiesi Themenstarter:in
89 Beiträge seit 2005
vor 17 Jahren

Irgendwie komme ich nicht damit zurecht. Es kommen Koordinaten größer
als der Radius raus, was ja nicht sein dürfte. So sehen meine Funktionen aus:


        public double getX (double radius, double percent)
        {
            double toret = radius * Math.Cos(2 * Math.PI * percent);
            return toret;
        }


        public double getY (double radius, double percent)
        {
            double toret = radius * Math.Sin(2 * Math.PI * percent);
            return toret;
        }

Habe jetzt einen Radius von 1.0 angegeben und bekomme z.B. bei 0.25 Prozent
für x=6,123 und für y=1. Sitz gerade irgendwie voll auf´m Schlauch, muß jetzt doch
mal meine Formelsammlung auspacken gehen 🙂

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo wiesi,

so ein Aufwand für so eine simple Berechnung. 🙂

Math.Cos verlangt einen im Bogenmaß angegebener Winkel. Du musst also den Winkel in Bogenmaß umrechnen, wenn er in einer anderen Form (z.B. Grad )vorliegt, sonst kannst du ihn direkt verwenden.

muß jetzt doch mal meine Formelsammlung auspacken gehen

Hm, scheint angebracht zu sein. 🙂

herbivore

wiesi Themenstarter:in
89 Beiträge seit 2005
vor 17 Jahren

Ahhhh ..... 😁

die Berechnung hat gestimmt, nur die Ausgabe war falsch. Anscheinend
mach die implizite toString()-Methode des double-Objekts (beim + Operator
bei Strings) irgendeine Formatierung ...... zum Glück gibts Debugger.
Jetzt paßt alles! Danke @alle

Grüße,
wiesi