Je suis coincé sur la façon d'aborder cela depuis un moment, donc toutes les suggestions seraient grandement appréciées!
Je veux mapper une texture sous la forme d'un triangle euclidien inférieur droit à un triangle hyperbolique sur le disque de Poincaré.
Voici la texture (le triangle supérieur gauche de la texture est transparent et inutilisé). Vous pourriez reconnaître cela comme faisant partie du cercle limite d'Escher I
Désolé, voir le commentaire car je ne suis pas autorisé à poster plus de deux liens semble-t-il!
Et voici à quoi ressemble mon polygone (il est centré à l'origine, ce qui signifie que deux arêtes sont des lignes droites, mais en général, les trois arêtes seront des arcs de cercle):
Le centre du polygone est l'incentre du triangle euclidien formé par ses sommets et je mappe la texture UV à l'aide de son incentre, la divisant en le même nombre de faces que le polygone et mappant chaque face sur la face du polygone correspondante. Cependant, le résultat ressemble à ceci:
Si quelqu'un pense que cela est résoluble en utilisant le mappage UV, je serais heureux de fournir un exemple de code, mais je commence à penser que cela pourrait ne pas être possible et je devrai écrire mes propres fonctions de mappage.
RESOLU avec un certain raffinement de la réponse de @ Nathan ci-dessous car les lignes AB, AC, BC peuvent en fait être des arcs et non des lignes.
Méthode: choisissez le côté le plus long, disons BC, puis subdivisez-le en un nombre pair de pièces. Subdivisez les deux autres côtés en le même nombre de pièces. Ensuite, les lignes qui les relient (DE dans la réponse ci-dessous) doivent également être des arcs et non des lignes droites. Subdivisez ces nouveaux arcs selon vos besoins, ajoutez les nouveaux triangles en tant que faces puis mappez UV le triangle inférieur droit de la texture à ces nouvelles faces.