Hallo,
ich versuche gerade ein paar Vierecke(hier auch Shapes genannt) in einer kreiförmigen Fomation anzuordnen. Das geht auch soweit, allerdings überschneiden sich die dann immer am oberen und unteren Rand des Kreises. Ich denke mal mein Algorithmus hierfür ist mal wieder ganz großer Mist 🙂 Hat jemand ne Idee wie es richtig gehört?
//maxShapes = Anzahl aller maximal darstellbaren Vierecke. Hab ich einfach
//dadurch errechnet das ich den Umfang des Kreises durch die Höhe eines Vierecks geteilt habe
int maxheightShapes= (radius *2) /(shapeSize.Height);
int maxShapes = maxheightShapes + (maxheightShapes-2); //zweiten Kreis fehlen Shapes an oberen/unteren Rand
//amountShapes = wie viele Vierecke sollen dargestellt werden
for(int i=0; i<amountShapes;i++)
{
angle = (2*Math.PI*i)/(maxShapes ); //winkel des aktuellen Vierecks
double x = Math.Cos(angle) * radius + middlePoint.X; //x-Pos
double y = Math.Sin(angle) * radius + middlePoint.Y; //y-pos
shapeList[i].Location = new PointF((float)x,(float)y);
}
Bitte die Zahlen und das Viereck in der Mitte ignorieren
Gruß
Snowwolf
Hallo Snowwolf3000,
ich gehe mal davon aus, dass die Rechtecke - zumindest solange sie nicht nebeneinander passen (was ja erst bei sehr großen Kreisen der Fall wäre) - so angeordnet sein sollen, dass sie vertikal alle den gleichen Abstand haben sollen. Du müsstest also nur in gleichen Schritten von oben nach unten gehen und trigonometisch ausrechen, wie weit du auf der jeweiligen Höhe das Rechteck nach links oder rechst schieben musst.
herbivore