Ich habe ein geometrisches Muster – sagen wir ein Kreuz:
Was ich mit etwas Überlappung und Kacheln wiederholen möchte … einfach:
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:
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.
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:
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:
Da wir spitze Winkel wollen, sieht das obige Diagramm so aus, wenn Sie in die andere Richtung drehen:
Die Bildgröße (B x H), die erforderlich ist, um die Textur kachelbar zu machen, kann wie folgt ermittelt werden:
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).
Hier ist ein nicht mathematischer Ansatz, als ich ähnliche Dinge tun musste:
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.
joojaa