Ich habe eine Weile darüber nachgedacht, wie ich das angehen soll, daher wären alle Vorschläge dankbar!
Ich möchte eine Textur in Form eines unteren rechten euklidischen Dreiecks auf ein hyperbolisches Dreieck auf der Poincare Disk abbilden.
Hier ist die Textur (das obere linke Dreieck der Textur ist transparent und wird nicht verwendet). Sie können dies als Teil von Eschers Kreislimit I erkennen
Entschuldigung, siehe Kommentar, da ich anscheinend nicht mehr als zwei Links posten darf!
Und so sieht mein Polygon aus (es ist am Ursprung zentriert, was bedeutet, dass zwei Kanten gerade Linien sind, im Allgemeinen sind jedoch alle drei Kanten Kreisbögen):
Das Zentrum des Polygons ist der Incentre des euklidischen Dreiecks, das durch seine Eckpunkte gebildet wird, und ich bin UV-Mapping der Textur unter Verwendung seines Incentre, teile sie in die gleiche Anzahl von Flächen wie das Polygon und ordne jede Fläche der entsprechenden Polygonfläche zu. Das Ergebnis sieht jedoch so aus:
Wenn jemand der Meinung ist, dass dies mithilfe von UV-Mapping lösbar ist, würde ich gerne einen Beispielcode bereitstellen. Ich fange jedoch an zu glauben, dass dies möglicherweise nicht möglich ist, und muss meine eigenen Mapping-Funktionen schreiben.
Gelöst mit einer Verfeinerung von @ Nathans Antwort unten, da die Linien AB, AC, BC tatsächlich Bögen und keine Linien sein können.
Methode: Wählen Sie die längste Seite, z. B. BC, und unterteilen Sie diese in eine gerade Anzahl von Teilen. Unterteilen Sie die beiden anderen Seiten in die gleiche Anzahl von Teilen. Dann müssen die Linien, die diese verbinden (DE in der Antwort unten), tatsächlich auch Bögen sein, keine geraden Linien. Unterteilen Sie diese neuen Bögen nach Bedarf, fügen Sie die neuen Dreiecke als Flächen hinzu und ordnen Sie das untere rechte Dreieck der Textur diesen neuen Flächen zu.