2009-06-27 4 views
3

Wo kann ich einen Algorithmus finden, um einige Objekte in Canvas auf eine clevere Weise zu positionieren? Ich benutze Javascript (mit Raphael Svg-Bibliothek), aber Beispiele mit anderen Sprachen (oder Pseudo-Sprache) sind willkommen. Die Geometrie ist nicht meine Stärke =)Algorithmen zum Positionieren von Objekten in einer Leinwand

Zum Beispiel hat 600x800 Leinwand, und ich will n Objekte in intelligenter Weise so bemessen, 60x60 platzieren, zum Beispiel:
- ein Algorithmus zur Positionierung von Objekten entlang m konzentrisch Kreise mit o Offset.
- ein Algorithmus zur Positionierung von Objekten entlang m konzentrische Quadrate, aber eine alternative Frequenz (das Ergebnis wie ein Schachbrett sein kann)

Und ähnlichen Beispiele .. Ich bin nur einige Arbeitsbeispiele zu meinem Fall anzupassen . Vielen Dank im Voraus =)

+0

Soweit ich weiß, sollte die Leistung von Algorithmen um O (n) für die Schachbrett Frage sein. (etwas wie einfache for-Schleife). Ich freue mich auf jede (wenn möglich) schnellere Lösung – xandy

+0

In meinem Fall ist Leistung kein kritisches Argument. Ich muss nur eine begrenzte Anzahl von Objekten verwalten. – Emilio

+0

Coz Ich verstehe deine Fragen nicht ganz, vielleicht kannst du ein Bild von dem hochladen, was deine erwartete Ausgabe ist. – xandy

Antwort

1

Für Circle:

Eingänge: CenterPt (vermutlich 300.400), RadiusLargestCircle (vermutlich 270 Ihre Objekte sind alle auf dem Bildschirm zu gewährleisten) RadiusDelta (60 gewährleistet, keine überlappenden Objekte unter der Annahme, Objekte sind Kreise)

Berechnung der Anzahl der Kreise ((RadiusLargestCircle -2 * RadiusDelta)/RadiusDelta)

für jeden Kreis

RadCir= RadiusLargestCircle - (CircleNum*RadiusDelta) 

(Ich werde dies später richtig fertig, ich muß den Kopf jetzt) ​​

aber im Wesentlichen erstes Objekt centerpt geht bei x = radiusLargestCircle, y = 0

divide Objekt 2 * Radius in Umfang des Kreises

für num Objekte

Parametergleichung des Kreises useing, Objekt bei x Bogenmaß von vorherigen

nächster Kreis