Ergebnis 1 bis 6 von 6

Thema: Pentagon mit gegebenem Punkt zeichnen

  1. #1

    Pentagon mit gegebenem Punkt zeichnen

    Ich hab gerade ein eher mathematisches Problem:

    C# hat im Namespace System.Drawing eine Klasse namens Graphics mit der Funktion FillPolygon(Brush, Point[])

    Hier gehts mir um das Point Array, welches ich füllen will. Dafür hab ich allerdings nur einen variablen Punkt im 2-Dimensionalem Raum aus dem sich je nach Position die weiteren ableiten. Verbindet man sie am Schluss, soll ein Pentagon herauskommen.
    Dabei ist noch wichtig, dass die Größe der Form vorher zufällig bestimmt und als Instanz der Klasse Size abgespeichert wird. Höhe und Breite sind hierbei gleich.
    Nun hab ich aber keine Ahnung, wie ich die anderen Punkte mit dem Gegebenem und der zufälligen Größe ableiten könnte.

    Ich weiß auch nicht, ob man das Problem mit der kleinen Beschreibung verstehen kann.

  2. #2
    Was genau meinst du mit "Größe der Form", wenn doch Höhe und Breite immer gleich bleiben?

    Wenn es ein regelmäßigen Fünfeck ist, kann man das Fünfeck in (gedachten) fünf Gleichseitige Dreiecke aufteilen und darüber die einzelnen Punkte ausrechnen.
    Grundvoraussetzung ist allerdings, dass man die Seitenlänge kennt.
    http://de.wikipedia.org/wiki/Datei:P...n_measures.svg

    Ansonsten steht bei Wikipedia Schritt für Schritt erklärt, wie man aus einem Radius eines Kreises die Eckpunkte für ein Fünfeck ausrechnet.
    http://de.wikipedia.org/wiki/Fünfeck...kel_und_Lineal

  3. #3
    Eigentlich ist alles, was du wissen musst, welchen Umkreis das Fuenfeck haben soll, sprich, welchen Radius R dein Fuenfeck haben darf, und wo sein Mittelpunkt {MX,MY} liegt. Dann lassen sich die Eckpunkte des Fuenfecks ganz einfach ueber die Kreisgleichung bestimmen, da du weisst, dass benachbarte Punkte 360° / 5 = 72° auseinander liegen. In meinem Fall zeigt eine Spitze immer nach oben (eben bei 0°). Allerdings kannst du das Pentagon ja beliebig drehen, indem du einfach in sin und cos einen konstanten Winkel hinzuaddierst. Falls du nicht auf regelmaessige Fuenfecke stehst, kannst du auch die Pentagonpunkte auf einer Ellipse platzieren. Dafuer muss sich einfach der Radius in der Formel fuer X vom Radius in der Formel fuer Y unterscheiden. Dann bekommst du eine Ellipse mit entsprechenden Halbachsen a und b.

    Code:
    for (int i=0; i<5; ++i) {
      X[i] = MX + R * sin( i * 72 * pi / 180);
      Y[i] = MY + R * cos( i * 72 * pi / 180);
    }
    Allerdings hab auch ich nicht ganz verstanden, was du mit dem konstanten Punkt und der variablen Gestalt meinst. Vielleicht hilft mein Geschwafel trotzdem etwas.

    @Whiz-zarD .... viel zu kompliziert ...

    Geändert von Ineluki (10.08.2010 um 02:09 Uhr)

  4. #4
    Zitat Zitat von Ineluki Beitrag anzeigen

    @Whiz-zarD .... viel zu kompliziert ...
    joa, manchmal denk ich zu kompliziert ^^"

    Dass mit dem Kreis ist mir nachher dann auch eingefallen.

  5. #5
    Ah vielen Dank Ineluki. Das ist die Lösung für's Problemchen!

    Ich hab mich unklar ausgedrückt, im Prinzip wollte ich mit dem Geblubber über Size auf eine variable Seitenlänge hinaus, bzw. kann ich das daraus ableiten.

    Was die Geometrie in der Mathematik angeht, da muss ich mal wieder einiges entstauben. Dinge, die man sonst sehr selten benutzt hat, geraten mit der Zeit irgendwie in Vergessenheit.

    Kurz: Problem gelöst. Danke.

  6. #6
    Zitat Zitat von elsen Beitrag anzeigen
    Was die Geometrie in der Mathematik angeht, da muss ich mal wieder einiges entstauben. Dinge, die man sonst sehr selten benutzt hat, geraten mit der Zeit irgendwie in Vergessenheit.

    Kurz: Problem gelöst. Danke.
    Ich hab mir für solche Fälle meine Formelsammlung aus der Schule früher aufbewahrt, kann ich nur empfehlen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •