@@mark.k:
nuqneH
ich möchte gerne ein rechteckiges <div> in beliebig viele flächengleiche <div> zerlegen.
Ganz einfach: Teile eine Seite des Rechtecks durch die Anzahl n der Teile. Vermutlich ist das Ergebnis visuell ansprechender, wenn du die längere Seite teilst.
Damit man evtl. besser versteht, was ich meine: das Ergebnis sollte ungefähr so aussehen http://thejit.org/static/v20/Jit/Examples/Treemap/example2.html
Das sieht nicht ungefähr so aus; die Teile dort sind nicht flächengleich. Und bitte verlinken; der „Link“-Button über dem Eingabefeld hilft dabei.
Hat jemand einen Codesnippet, oder irgend eine mathematische Formel parat, mit der man das umsetzen kann?
Na gut, wenn’s denn ein bisschen besser aussehen soll als oben beschrieben: Teile n so in zwei Faktoren a und b, dass beide möglichst dicht bei √n liegen; o.B.d.A. a ≤ √n ≤ b. Das heißt: Suche diejenigen a, b ∈ ℕ⁺, für die gilt: a · b = n und es gibt keine anderen Zahlen a′, b′ ∈ ℕ⁺ mit a′ · b′ = n und a < a′ ≤ √n ≤ b′ < b.
Also bspw. von √n abwärts alle ganzen Zahlen testen, ob sie Teiler von n sind. Die erste gefundene Zahl ist a; b ergibt sich aus n : a.
Die längere Seite des Rechtecks wird durch die größere der beiden Teiler (also durch b) geteilt, die kürzere Seite durch a.
Wenn n eine Primzahl ist, gibt es keine bessere Teilung als die anfangs beschriebene.
Qapla'
Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
(Mark Twain)