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 ...
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
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
wie kann man denn in .net nur kreisfragmente zeichnen?
also sozusagen ein so ein tortenstück
ah habs gefunden: DrawPie
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)=rsin(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 😁 :]
Herzliches Dankeschön! 😉
Ich benutze übrigens SVG (Vektorgrafiken, definiert durch XML), also nicht
direkt C#. Aber ich wußte doch daß hier Vollprofis sind! 😉
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 🙂
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
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