Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

1

21.02.2014, 20:39

Objekte im Kreis anordnen

Hallo Community,

gibt es einen Algorithmus wie man Objekten im Kreis anorden kann? Am besten für beliebig viele Objekte.
Ich versuche einen Graphen zu visualisieren, am übersichtlichsten wäre dann diese Darstellung. Kompliziert wird es dadurch, dass es unterschiedlich viele Objekte sind.
Hat jemand eine Idee?



Gruß,
MitgliedXYZ

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

2

21.02.2014, 20:50

Bei n-Objekten ist der Winkel zwischen den n Objekten zum Mittelpunkt 360° / n.
Position des i-ten Objekts dann über den Einheitskreis.
Beispielcode in C++:

C-/C++-Quelltext

1
2
3
4
const double Angle = (M_PI * 2.0) / n;
//Für jedes i-te Objekt dann die Position des Mittelpunktes:
const double MidPosX = (cos(Angle * i) * RadiusX) + CirclePosX;
const double MidPosY =(sin(Angle * i) * RadiusY) + CirclePosY;

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (21.02.2014, 22:41)


DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

21.02.2014, 22:43


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

21.02.2014, 23:51

Eine Rotationsmatrix braucht man dafür nicht.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

5

22.02.2014, 11:57

Danke Spiele_Programmierer, genau so etwas habe ich gesucht, jetzt funktioniert es. Vielen Dank!



C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 private void Form1_Paint(object sender, PaintEventArgs e)
        {int Breite = 50;int Hoehe = 50;
            double Winkel = (Math.PI * 2.0) / anzahlObjekte;
            double RadiusX = 10 * anzahlObjekte + Breite;
            double RadiusY = 10 * anzahlObjekte + Hoehe;
            double StartX = 350;
            double StartY = 350;
            Graphics canvas = this.CreateGraphics();
            Pen pen = new Pen(Color.Blue, 3);

            for (int i = 0; i < anzahlObjekte; i++)
            {
                double MidPosX = (Math.Cos(Winkel * i) * RadiusX) + StartX;
                double MidPosY = (Math.Sin(Winkel * i) * RadiusY) + StartY;
                canvas.DrawRectangle(pen, (int)MidPosX, (int)MidPosY, Breite, Hoehe);
            }
        }

Werbeanzeige