Fläche mit Kreisen füllen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
einsdreiundzwanzig
User
Beiträge: 13
Registriert: Dienstag 24. August 2010, 23:31

Hallo,

Ich habe jetzt mal ein mathematisch / grafisches Problem, und zwar möchte ich eine Fläche mit Kreisen füllen, so dass...

- die Kreise Durchmesser von 3, 4, 5, 6, und sieben mm haben.
- Alle größen ca. gleich häufig vorkommen.
- die Kreise einen Abstand von mindestens 1, höchstens 3mm zueinander haben. (Ich weiss nicht ob das mathematisch / geometrisch gesehen überhaupt möglich ist, aber am besten wäre wenn der Abstand konstant immer derselbe ist...)
- ...und dabei möglichst dicht gepackt sind.
- die Fläche ist rechteckig, die Kreisfüllung soll allseitig bis zum Rand gehen.

Hier ist ein Beispielbild, ungefähr so würde das im Prinzip aussehen:

Bild

Sinn der Sache ist dass ich diese Flächenfüllung in meinem CAD-Programm brauche - dort gibt es aber keine Funktion, um sowas automatisch anzulegen, daher dachte ich mach's in Python und exportiere es dann nach .dxf

Wenn jemand eine andere Möglichkeit / ein Programm wüsste, mit dem man sowas machen kann, wäre das auch super - geht mir ja im Prinzip nicht drum, das partout in Python zu coden, ist nur mehr das einzige was mir noch einfällt...

Falls ich's dann doch mit python mache: Ich weiss nicht so richtig wie ich da anfangen sollte. Bräuchte wohl am Ende eine Liste mit Kreispositionen und Durchmessern, aber wie würde ein Algorithmus aussehen, damit das ganze dann meinen o.g. Anforderungen entspricht?

Danke schonmal und gruß,
123
Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

Eine wirklich tolle Aufgabe. Ich habe mich schon oft gefragt wie man so etwas programmieren könnte wobei ich das gerne für Polygone haben würde um diese dann mit Kreisen zu füllen,...

Mein Gedanke war damals Pygame ( evtl. Bouncing Balls)?
einsdreiundzwanzig
User
Beiträge: 13
Registriert: Dienstag 24. August 2010, 23:31

Eine wirklich tolle Aufgabe.
Ist das ironisch gemeint? :) Ich find's grad eher ein bisschen blöd - enerseits sieht's gut aus, deshalb will ich's ja im CAD, andererseits ist es aber echt nicht leicht anzulegen... Hmpf.
BlackJack

@einsdreiundzwanzig: Die mathematische Überschrift dafür ist "circle packing". Da findet man auch einiges im Netz drüber.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

einsdreiundzwanzig hat geschrieben:
Eine wirklich tolle Aufgabe.
Ist das ironisch gemeint? :) Ich find's grad eher ein bisschen blöd - enerseits sieht's gut aus, deshalb will ich's ja im CAD, andererseits ist es aber echt nicht leicht anzulegen... Hmpf.
Sorry. Nein das war echt ernst gemeint. Es gibt Dinge wo ich mich echt frage wie man es programmiert,... und das ist so ein Beispiel.
einsdreiundzwanzig
User
Beiträge: 13
Registriert: Dienstag 24. August 2010, 23:31

Ja versteh ich. Ich hätte grad auch saugern einen schönen verständlichen Python-Quelltext, gern so 25-50 Zeilen, der genau das macht was ich brauche... :) Hab aber glaube ich keine Zeit vorher noch ein paar Semester mathe zu studieren. :)

BlackJack und numerix - 'circle packing' war das Stichwort, vielen Dank, war mir natürlich nicht klar dass das so heisst. Das 'circlepack'-tool könnte das bestimmt so erzeugen wie ich's will, ist aber ziemlich komplex und irgendwie bedient es sich nicht sonderlich intuitiv. Naja ich werd mal weitergucken ob ich mit dem Stichwort noch was finde und mich sonst in das Tool reinwurschteln...

Oder wüsstet ihr so auf die Schnelle, wie man sowas in Python macht? Ist das vielleicht gar nicht so kompliziert wie ich denke?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

einsdreiundzwanzig hat geschrieben:Oder wüsstet ihr so auf die Schnelle, wie man sowas in Python macht? Ist das vielleicht gar nicht so kompliziert wie ich denke?
Ich fürchte eher, es ist noch komplizierter als du denkst. Ich hatte mir das Java-Programm, das man auf der von mir verlinkten Seite findet, auch kurz angesehen und teile deinen Eindruck. Mal eben so bedient es sich nicht. Ich habe noch nicht einmal auf die Schnelle ausfindig machen können, ob die von dir genannten Bedingungen dort überhaupt vorgesehen sind. Aber - und das ist schon mal nicht wenig - es startet schonmal ohne Problem direkt als jar-Datei, keine Installation o.ä.
einsdreiundzwanzig
User
Beiträge: 13
Registriert: Dienstag 24. August 2010, 23:31

Bin jetzt auf Processing gestossen (http://processing.org) - das sieht insgesamt superinteressant aus und wie's aussieht kriege ich damit auch mein circle packing hin. :)
Antworten