So erstellen Sie ein Muster oder Kacheln aus gedrehten Elementen

Ich habe ein geometrisches Muster – sagen wir ein Kreuz:

Elementares Symbol, das wiederholt werden soll

Was ich mit etwas Überlappung und Kacheln wiederholen möchte … einfach:

Wiederholen Sie das Muster mit der markierten Einheitskachel

Das blaue Quadrat markiert die 100×100-Pixel-Einheitskachel.

Allerdings kommt hier der Haken: Ich möchte das Bild um ca. 30° drehen und dann kacheln. Dies hat sich als überraschend schwierig erwiesen; Natürlich ist es einfach, das Bild zu drehen – aber das Finden einer senkrechten Einheitskachel (der blaue Block im obigen Bild) ist es nicht:

Gedrehtes Wiederholungsmuster

Die Kachel mit 100 × 100 Einheiten wird es eindeutig nicht schneiden. Wie wähle ich das richtige Einheitenplättchen aus? Die Position spielt vermutlich keine Rolle, nur die Größe ist wichtig, aber ich weiß nicht, wie ich das berechnen soll. Intuitiv erwarte ich, dass der Rotationswinkel und das Skalarprodukt eine starke Rolle spielen werden, aber das ist alles, was ich bekommen habe 1 . Was noch schlimmer ist, die Drehung für beliebige Winkel ist aufgrund der inhärenten Diskretion von Pixeln nicht exakt. Selbst wenn ich die mathematisch korrekte Größe berechne, führt dies nicht unbedingt zu einer nahtlosen Kachel.

Wie kann ich also eine optimale Kombination aus Winkel und Größe berechnen, wenn ich die Größe der senkrechten Einheitszelle (hier 100 × 100) und einen ungefähren gewünschten Winkel annehme?


1 Mein Gedanke war (unter Verwendung der Wikipedia-Notation), da wir wollen, dass die Projektion von A auf B so lang ist wie B, haben wir |B|=|A|·cosϑ und somit |A|=|B|/cosϑ . Was in meinem Fall die neue Länge |A|=115,470 ergeben würde, aber ein einfacher Versuch zeigt, dass dies bei weitem nicht stimmen kann, außerdem ergibt sich eine hässliche nicht ganzzahlige Zahl. Wenn wir uns nur das obige gedrehte Bild ansehen, können wir sehen, dass das gesamte 200 × 400-Bild keine sich wiederholende senkrechte Einheit enthält.

Man kann Muster im Illustrator tatsächlich drehen

Antworten (2)

Ich habe festgestellt, dass dies hilfreich sein könnte: Erstellen Sie gedrehte kachelbare Muster

Wie Sie bereits erwähnt haben, geht es um Mathematik, die weit über mein Verständnis hinausgeht, daher werde ich nur einige der Prinzipien erläutern, die mit dem Entwerfen zu tun haben.

Grundsätzlich wäre die "Lösung" folgende:

  • Nehmen Sie eine nicht gedrehte, kachelbare Textur, die sich horizontal und vertikal wiederholt.
  • Kacheln Sie es zu einem großen Bild.
  • Drehen Sie das große Bild um den gewünschten Winkel.
  • Ermitteln Sie die Größe der kleinsten wiederholbaren Einheit dieser gedrehten Textur (unter Verwendung der folgenden Mathematik).
  • Beschneiden Sie das große Bild auf die Größe der wiederholbaren Einheit.

Das Bild unten zeigt eine gedrehte Textur, die durch Kacheln des ursprünglichen, nicht gedrehten Musters und anschließendes Drehen des resultierenden Mosaiks entstanden ist. Das grundlegende nicht gedrehte Texel ist hervorgehoben und hat eine Breite w und eine Höhe h. Der Rotationswinkel ist der spitze Winkel, den die w-Linie mit der Horizontalen bildet:

Geben Sie hier die Bildbeschreibung ein

Da wir spitze Winkel wollen, sieht das obige Diagramm so aus, wenn Sie in die andere Richtung drehen:

Geben Sie hier die Bildbeschreibung ein

Die Bildgröße (B x H), die erforderlich ist, um die Textur kachelbar zu machen, kann wie folgt ermittelt werden:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Die Erklärung geht noch ein bisschen weiter. Wenn Sie sie also nützlich fanden, können Sie die Antwort gerne bearbeiten (oder eine neue posten).

Es ist beruhigend, dass mein Ansatz zumindest weitgehend richtig war, auch wenn er nicht weit genug ging.
Interessanterweise führt all dieses Theoretisieren zu nichts, da Inkscape anscheinend nicht pixelgenau arbeitet, sodass, obwohl ich das Muster mit exakten Werten und mathematischen Drehungen erstellt habe, die resultierende Bitmap immer noch leichte Verzerrungen aufweist, wodurch es unmöglich ist, Kacheln zu extrahieren. :-(

Hier ist ein nicht mathematischer Ansatz, als ich ähnliche Dinge tun musste:

  1. Machen Sie einen massiven Bereich des Musters (die Kacheln werden nicht klein sein), drehen Sie wie gewünscht.
  2. Wählen Sie eine visuell einfache, markante Stelle (z. B. eine Ecke des X)
  3. Lassen Sie eine horizontale und vertikale Führungslinie genau durch diese Stelle laufen.
  4. Folgen Sie der horizontalen Linie, bis Sie ein exaktes Duplikat der ursprünglichen Stelle auf der Linie erreichen. Setzen Sie dort eine vertikale Führung.
  5. Folgen Sie der vertikalen Linie (beide vertikale Linien sollten denselben Boden bedecken), bis Sie ein exaktes Duplikat der ursprünglichen Stelle erreichen. Setzen Sie dort eine horizontale Führung.

Sie haben jetzt ein Rechteck mit 4 Linien um die kleinstmögliche Kachel herum (auch hier wird es nicht klein sein).

Dann gibt es ein wenig frustrierendes Trial-and-Error, um es pixelgenau zu machen, dann sollten Sie bereit sein zu gehen.

Ich fing damit an und dachte: "Wie schwierig kann es sein?". Oh, es war eine ziemliche Herausforderung, und ich bin gewaltig gescheitert. Vielleicht war mein Winkel falsch oder meine Technik war schlecht, aber meine Leinwand war einfach RIESIG. Ich habe aufgegeben, bevor ich den magischen Punkt der Musterung xD entdeckt habe (bei etwa dem 20-fachen meiner ursprünglichen Größe) - Bearbeiten: Beispiel .
Leider funktioniert diese Methode nur für sehr wenige spezifische Rotationswinkel (siehe den verlinkten Beitrag in Yiselas Antwort).