Mappa una trama su un triangolo iperbolico


9

Sono rimasto bloccato su come affrontarlo per un po ', quindi ogni suggerimento sarebbe apprezzato!

Voglio mappare una trama sotto forma di un triangolo euclideo in basso a destra su un triangolo iperbolico sul Disco di Poincare.

Ecco la trama (il triangolo in alto a sinistra della trama è trasparente e inutilizzato). Potresti riconoscerlo come parte del Circle Limit I di Escher

Scusa, vedi il commento in quanto non mi è permesso pubblicare più di due link, a quanto pare!

E questo è come appare il mio poligono (è centrato sull'origine, il che significa che due bordi sono linee rette, tuttavia in generale tutti e tre i bordi saranno archi circolari):

Wireframe Polygon

Il centro del poligono è l'incentivo del triangolo euclideo formato dai suoi vertici e io sto mappando UV la trama usando il suo incentivo, dividendolo nello stesso numero di facce del poligono e mappando ciascuna faccia sulla corrispondente faccia poligonale. Tuttavia, il risultato è simile al seguente:

Poligono strutturato

Se qualcuno pensa che questo sia risolvibile usando la mappatura UV sarei felice di fornire qualche codice di esempio, tuttavia sto cominciando a pensare che ciò potrebbe non essere possibile e dovrò scrivere le mie funzioni di mappatura.

RISOLTO con un certo perfezionamento della risposta di @ Nathan di seguito poiché le linee AB, AC, BC possono in realtà essere archi non linee.

Metodo: selezionare il lato più lungo, ad esempio BC, quindi suddividerlo in un numero pari di parti. Suddividere gli altri due lati nello stesso numero di parti. Quindi le linee che le collegano (DE nella risposta sotto) devono in realtà essere anche archi, non linee rette. Suddividere questi nuovi archi come richiesto, aggiungere i nuovi triangoli come facce quindi mappare UV il triangolo in basso a destra della trama su queste nuove facce.

Semplice? Affatto. Ma ha funzionato. Pesce 1 Pesce 2


Ecco la trama che sto usando: i.stack.imgur.com/SEi0G.png
Lewy Blue

1
Presumo che il problema sia la tosatura dell'immagine? Vedo che ciò accade quando hai una spaziatura incoerente tra i vertici della suddivisione triangolare. Suppongo che stai usando passaggi coerenti per la tua mappatura uv, dandoti l'effetto di taglio.
Daniel M Gessel

In realtà l'ho risolto poco dopo aver pubblicato questo rendendo le suddivisioni coerenti e più piccole, corregge un po 'la cesoiatura (anche se non completamente). Tuttavia, la trama è ancora molto distorta. Sto lavorando al suggerimento di @nathan qui sotto, che almeno consentirà una suddivisione molto più fine.
Lewy Blue

1
@Looeee Potresti passare il tuo codice, per favore, sono molto interessato a questo campo della grafica
x-rw,

Sì, puoi trovare il mio codice qui: github.com/looeee/blackthread-heroku/tree/master/assets/js/src/… E la versione live: blackthread.io/experiments/eschersketch Onestamente, è così tanto tempo che ho guardato a questo non ricordo dove nel codice sono le funzioni che risolvono questo problema, ma se hai problemi a dargli un senso lasciami un altro commento qui e darò un'occhiata.
Lewy Blue,

Risposte:


8

La mia ipotesi è che per ottenere l'aspetto giusto della trama, è necessario suddividere anche l'interno del triangolo e approssimare la mappatura UV non lineare al suo interno.

Attualmente sembra che tu stia suddividendo i bordi del triangolo e formando una ventola di triangoli più piccoli tra il bordo e l'incentro. Questo andrebbe bene se stessimo solo rendendo il triangolo in un colore solido. Ma quando si applica una trama, si ottengono discontinuità ai confini di quelle suddivisioni, perché la trama viene semplicemente allungata linearmente su ciascun triangolo suddiviso e non si avvicina correttamente alla mappatura iperbolica lungo la direzione radiale.

Dovrai suddividere lungo entrambi gli assi, qualcosa del genere:

inserisci qui la descrizione dell'immagine

e posizionare tutti i vertici in modo appropriato nello spazio dello schermo e nello spazio UV per approssimare le coordinate iperboliche all'interno del triangolo. Se si suddivide abbastanza finemente, questo dovrebbe produrre l'illusione di una mappatura delle trame che curva continuamente.


1
Grazie, ci proverò. Era uno dei miei metodi originali di costruzione del poligono, per quanto matematicamente molto più complesso, quindi sono andato con il metodo più semplice. Gli darò un'altra possibilità e riporterò indietro.
Lewy Blue,

Grazie. Sono stato in grado di modificare il tuo suggerimento in una soluzione. Vedi la mia modifica sopra.
Lewy Blue
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.