Laden...

Vierecke kreisförmig anordnen

Erstellt von Snowwolf3000 vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.855 Views
Snowwolf3000 Themenstarter:in
140 Beiträge seit 2004
vor 18 Jahren
Vierecke kreisförmig anordnen

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

49.485 Beiträge seit 2005
vor 18 Jahren

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