Frage

Ich interessiere mich für mit Formen wie diese:

Tangram

Normalerweise wird ein Tangram besteht aus sieben Formen (5 Dreiecke, 1 Quadrat und 1 Parallelogramm ).

Was ich tun möchte, füllen ist eine Form nur mit Tangram Formen, so an diesem Punkt, die Größe und die Wiederholung von Formen sollte dabei keine Rolle.

Hier ist etwas, das ich manuell versucht:

sichel mit Tangram Formen

Ich bin ein wenig verloren, wie dies zu nähern.

Angenommen, ich habe einen Weg (eine geordnete Liste / Array von Punkten der Kontur), Ich stelle mir vor, ich sollte versuchen, irgendeine Art von Triangulation zu tun.

Gibt es so etwas wie Deulanay Triangulation mit Dreiecken erzwungener bis 45 Grad rechtwinklige Dreiecke?

Eine ‚brute‘ Ansatz wäre, eine Reihe von Dreiecke hinzufügen (45 Grad) und verwenden Sie SAT zur Kollisionserkennung auf ‚fix‘ Überschneidungen und hoffentlich Lücken vermieden werden.

Da das Quadrat und Parallelogramm kann auch der Dreiecke (45 Grad) gemacht werden, ich dort vorstellen wäre eine schöne saubere geometrische Lösung, nicht wahr?

Wie kann ich einpacken Dreiecken (45 Grad) innerhalb einer beliebigen Form?

Alle Ideen sind willkommen.

War es hilfreich?

Lösung

Ein paar zufälligen Gedanken (vielleicht sie Ihnen helfen, eine bessere Lösung zu finden), wenn Sie nur die ursprünglichen Größen der Formen unter Verwendung sind:

  • , wie Sie darauf hinweisen, alle Formen in der Tangram kann gemacht werden, die aus z.B. das gelbe oder rosa Dreieck (d-g-c), versuchen, so auch von einem Bottom-up-Ansatz, wie ersten Ort so viele gelben Dreiecken in der Form versuchen, zu denken und sie dann in größere Formen kombinieren, wenn möglich. Im schlimmsten Fall werden Sie mit einem Satz dieser kleinsten Dreiecke enden.

  • jede Art Triangulation von nicht-Polygone (wie der Halbmond in Ihrem Beispiel) wahrscheinlich nicht funktioniert sehr gut ...

  • Es sieht aus wie Sie verlangen, dass die Formen nur wenige diskrete Orientierungen haben kann. Um die beste Anpassung dieser Dreiecke in die vorgegebene Form zu finden, würde ich die folgende ungefähre Lösung vorschlagen: ein Gitter aus Dreiecken (d.h. einem quadratischen Raster mit diagonalen Linien) über die Form ziehen und diese Dreiecke treffen, die vollständig enthalten sind. Dies ist sehr wahrscheinlich werden Sie nicht die optimale Abdeckung geben, aber dann könnte man immer wieder das Gitter von einem Zehntel der Rastergröße in horizontaler und vertikaler Richtung verschieben und sehen, ob Sie etwas, das deckt einen größeren Bruchteil der ursprünglichen Form finden (oder Sie gehen könnte in Schritten von 1/2 dann 1/4 usw. der ursprünglichen Rastergröße im Sinne einer binären Suche).

Wenn Sie erlauben eine beliebige Skalierung der Formen, die Sie jede annähern könnte (einigermaßen glatt?) Form zu beliebiger Genauigkeit durch immer kleinere Formen hinzufügen. Z.B. wenn Sie ein Rasterbild haben, können Sie zum Beispiel die Größe des gelben Dreieck wählen, dass zwei von ihnen ein Pixel auf dem Bild machen und dann können Sie eine solche Rasterbild darstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top