Hiperbolik bir üçgen üzerine bir doku eşleme


9

Bir süredir buna nasıl yaklaşacağım konusunda sıkıştım, bu yüzden herhangi bir öneri minnetle takdir edilecektir!

Bir dokuyu sağ alt öklid üçgeni şeklinde Poincare Diskteki hiperbolik bir üçgene eşlemek istiyorum.

İşte doku (dokunun sol üst üçgeni şeffaf ve kullanılmamış). Bunu Escher'ın Circle Limit I'in bir parçası olarak tanıyabilirsiniz.

Üzgünüz, göründüğü gibi ikiden fazla bağlantı yayınlamak için izin verilmediği için yoruma bakın!

Ve bu çokgene benziyor (başlangıçta ortalanmış, yani iki kenar düz çizgiler, ancak genel olarak üç kenar da dairesel yaylar olacak):

Tel Kafes Çokgen

Çokgenin merkezi, köşeleri tarafından oluşturulan öklid üçgeninin teşviğidir ve ben dokuyu teşvikini kullanarak eşleştiriyorum, çokgenin sahip olduğu yüz sayısına bölerek ve her yüzü karşılık gelen çokgen yüzüne eşleştiriyorum. Ancak sonuç şöyle görünür:

Dokulu Çokgen

Herkes bu UV eşleme kullanarak çözülebilir olduğunu düşünüyorsa, ben bazı örnek kod sağlamak için mutlu olurdu, ancak bunun mümkün olmadığını düşünmeye başladım ve kendi eşleme fonksiyonları yazmak zorunda kalacağım.

AB, AC, BC hatları aslında satırlar değil yaylar olabileceğinden @ Nathan'ın cevabını biraz ayrıntılandırarak ÇÖZÜLDÜ.

Yöntem: en uzun tarafı seçin, mesela BC, sonra bunu eşit sayıda parçaya bölün. Diğer iki tarafı aynı sayıda parçaya bölün. Daha sonra bunları birbirine bağlayan çizgiler (aşağıdaki cevapta DE) düz çizgiler değil de yaylar olmalıdır. Bu yeni yayları gerektiği gibi alt bölümlere ayırın, yeni üçgenleri yüzler olarak ekleyin ve ardından UV'nin bu yeni yüzlere dokunun sağ alt üçgenini eşleyin.

Basit? Bir şey değil. Ama işe yaradı. Balık 1 Balık 2


İşte kullandığım doku: i.stack.imgur.com/SEi0G.png
Lewy Blue

1
Sorunun görüntünün kesilmesi olduğunu varsayıyorum? Bunun, üçgen altbölümünün köşeleri arasında tutarsız bir aralığın olduğu yerde olduğunu görüyorum. Benim tahminim uv eşlemeniz için tutarlı adımlar atıp size kesme efekti veriyorsunuz.
Daniel M Gessel

Aslında alt bölümleri tutarlı ve daha küçük hale getirerek bunu yayınladıktan kısa bir süre sonra düzeltmeyi düzeltdim (tamamen olmasa da). Ancak doku hala çok bozuk. En azından çok daha ince bir alt bölüme izin verecek olan @nathan önerisi üzerinde çalışıyorum.
Lewy Blue

1
@Looeee Kodunuzu iletir misiniz lütfen, bu grafik alanıyla çok ilgileniyorum
x-rw

Evet, kodumu burada bulabilirsiniz: github.com/looeee/blackthread-heroku/tree/master/assets/js/src/… Ve canlı sürüm: blackthread.io/experiments/eschersketch Dürüst olmak gerekirse, baktığımdan beri çok uzun Bu kodu çözen fonksiyonların nerede olduğunu hatırlayamıyorum, ama bunu anlamakta zorlanıyorsanız bana başka bir yorum bırakın ve bir göz atacağım.
Lewy Blue

Yanıtlar:


8

Benim tahminim, dokunun doğru görünmesi için üçgenin iç kısmını da alt bölümlere ayırmanız ve içindeki doğrusal olmayan UV eşlemesine yaklaşık olarak yaklaşmanız gerekecek.

Şu anda, üçgenin kenarları etrafında bölünüyor ve kenar ile incenter arasında daha küçük üçgenlerden oluşan bir fan oluşturuyorsunuz. Üçgeni düz bir renkte oluşturuyorsanız bu iyi olurdu. Ancak bir doku uygularken, bu alt bölümlerin sınırlarında süreksizliklere maruz kalırsınız, çünkü doku her alt bölümlü üçgen boyunca doğrusal olarak gerilir ve radyal yön boyunca hiperbolik eşlemeye doğru yaklaşmaz.

Her iki eksen boyunca alt bölümlere ayırmanız gerekir, böyle bir şey:

resim açıklamasını buraya girin

ve üçgenin iç kısmındaki hiperbolik koordinatları yaklaşık olarak belirlemek için tüm köşeleri ekran boşluğuna ve UV boşluğuna uygun şekilde yerleştirin. Yeterince ince bir şekilde alt bölümlere ayırırsanız, bu sürekli eğimli bir doku eşlemesi yanılsamasına yol açacaktır.


1
Teşekkürler, bunu deneyeceğim. Çokgeni oluşturmanın orijinal yöntemlerinden biriydi, ancak matematiksel olarak çok daha karmaşıktı, bu yüzden daha basit bir yöntemle gittim. Bir şans daha vereceğim ve rapor vereceğim.
Lewy Blue

Teşekkür ederim. Önerinizi bir çözüm olarak değiştirebildim. Yukarıdaki düzenlememe bakın.
Lewy Blue
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.