Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Kreispunkte berechnen
wiesi
myCSharp.de - Member

Avatar #avatar-2384.gif


Dabei seit:
Beiträge: 89

Themenstarter:

Kreispunkte berechnen

beantworten | zitieren | melden

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 ...
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo wiesi,
Zitat
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
private Nachricht | Beiträge des Benutzers
wiesi
myCSharp.de - Member

Avatar #avatar-2384.gif


Dabei seit:
Beiträge: 89

Themenstarter:

beantworten | zitieren | melden

Ist schonmal nicht schlecht, hats jemand schon programmiert?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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.
Zitat
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
private Nachricht | Beiträge des Benutzers
sheitman
myCSharp.de - Member



Dabei seit:
Beiträge: 1.047

beantworten | zitieren | melden

wie kann man denn in .net nur kreisfragmente zeichnen?

also sozusagen ein so ein tortenstück

ah habs gefunden: DrawPie
private Nachricht | Beiträge des Benutzers
der Marcel
myCSharp.de - Member

Avatar #avatar-1860.gif


Dabei seit:
Beiträge: 564
Herkunft: Dresden

beantworten | zitieren | melden

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)=r*cos(p*2*PI)
y(p)=r*sin(p*2*PI)

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

Viele Grüße

Der Marcel
:] :DDer größte Fehler eines modernen Computers sitzt meist davor :]
private Nachricht | Beiträge des Benutzers
wiesi
myCSharp.de - Member

Avatar #avatar-2384.gif


Dabei seit:
Beiträge: 89

Themenstarter:

beantworten | zitieren | melden

Herzliches Dankeschön!

Ich benutze übrigens SVG (Vektorgrafiken, definiert durch XML), also nicht
direkt C#. Aber ich wußte doch daß hier Vollprofis sind!
private Nachricht | Beiträge des Benutzers
wiesi
myCSharp.de - Member

Avatar #avatar-2384.gif


Dabei seit:
Beiträge: 89

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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.
Zitat
muß jetzt doch mal meine Formelsammlung auspacken gehen
Hm, scheint angebracht zu sein. :-)

herbivore
private Nachricht | Beiträge des Benutzers
wiesi
myCSharp.de - Member

Avatar #avatar-2384.gif


Dabei seit:
Beiträge: 89

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers