แมปเท็กซ์เจอร์ลงบนสามเหลี่ยมซึ่งเกินความจริง


9

ฉันติดอยู่กับวิธีการนี้ในขณะที่ดังนั้นข้อเสนอแนะใด ๆ จะได้รับการชื่นชมอย่างสุดซึ้ง!

ฉันต้องการแมปเท็กซ์เจอร์ในรูปของสามเหลี่ยมยูคลิดล่างขวากับสามเหลี่ยมไฮเพอร์โบลิกบนดิสก์ Poincare

นี่คือพื้นผิว (สามเหลี่ยมด้านซ้ายบนของพื้นผิวโปร่งใสและไม่ได้ใช้) คุณอาจจำได้ว่าสิ่งนี้เป็นส่วนหนึ่งของ Circle Limit I ของ Escher

ขออภัยเห็นความคิดเห็นที่ฉันไม่ได้รับอนุญาตให้โพสต์มากกว่าสองลิงค์ดูเหมือน!

และนี่คือสิ่งที่รูปหลายเหลี่ยมของฉันดูเหมือน (อยู่กึ่งกลางที่จุดกำเนิดซึ่งหมายความว่าขอบสองเส้นเป็นเส้นตรงอย่างไรก็ตามโดยทั่วไปขอบทั้งสามจะเป็นส่วนโค้งแบบวงกลม):

Wiregon Polygon

จุดกึ่งกลางของรูปหลายเหลี่ยมคือ incentre ของสามเหลี่ยม euclidean ที่เกิดจากจุดยอดของมันและฉันกำลังทำแผนที่ UV พื้นผิวโดยใช้ incentre โดยแบ่งออกเป็นจำนวนใบหน้าเท่ากันกับรูปหลายเหลี่ยมที่มีและทำแผนที่แต่ละหน้าบนใบหน้ารูปหลายเหลี่ยมที่เกี่ยวข้อง อย่างไรก็ตามผลลัพธ์จะเป็นดังนี้:

รูปหลายเหลี่ยมพื้นผิว

หากใครคิดว่าสิ่งนี้สามารถแก้ไขได้โดยใช้การทำแผนที่ UV ฉันยินดีที่จะให้รหัสตัวอย่าง แต่ฉันเริ่มคิดว่าอาจเป็นไปไม่ได้และฉันจะต้องเขียนฟังก์ชั่นการทำแผนที่ของตัวเอง

แก้ไขแล้วด้วยการปรับแต่งบางส่วนของคำตอบของ @ Nathan ด้านล่างเนื่องจากบรรทัด AB, AC, BC อาจไม่ใช่เส้นโค้งจริงๆ

วิธีการ: เลือกด้านที่ยาวที่สุดพูด BC แล้วแบ่งส่วนนี้เป็นจำนวนคู่ แบ่งอีกสองด้านออกเป็นจำนวนชิ้นส่วนเท่ากัน จากนั้นเส้นที่เชื่อมต่อ (DE ในคำตอบด้านล่าง) จะต้องเป็นเส้นโค้งไม่ใช่เส้นตรง แบ่งส่วนโค้งใหม่เหล่านี้ตามที่ต้องการเพิ่มรูปสามเหลี่ยมใหม่เป็นใบหน้าแล้ว UV แผนที่สามเหลี่ยมด้านล่างขวาของพื้นผิวให้กับใบหน้าใหม่เหล่านี้

ง่าย? ไม่ใช่เลย. แต่มันก็ใช้ได้ดี ปลา 1 ปลา 2


นี่คือพื้นผิวที่ฉันใช้: i.stack.imgur.com/SEi0G.png
Lewy Blue

1
ฉันคิดว่าปัญหาคือการตัดภาพหรือไม่ ฉันเห็นสิ่งนี้เกิดขึ้นเมื่อคุณมีระยะห่างที่ไม่สอดคล้องกันระหว่างจุดยอดของการแบ่งสามเหลี่ยม ฉันเดาว่าคุณกำลังใช้ขั้นตอนที่สอดคล้องกันสำหรับการทำแผนที่ UV ของคุณซึ่งจะให้ผลการตัด
Daniel M Gessel

ฉันแก้ไขตามจริงไม่นานหลังจากโพสต์สิ่งนี้โดยทำให้การแบ่งย่อยสอดคล้องกันและเล็กลงมันช่วยแก้ไขการตัดบ้าง (แม้ว่าจะไม่สมบูรณ์) อย่างไรก็ตามพื้นผิวยังคงบิดเบี้ยวมาก ฉันกำลังทำงานเกี่ยวกับข้อเสนอแนะ @nathan ด้านล่างซึ่งอย่างน้อยที่สุดจะอนุญาตให้แบ่งย่อยได้ดีขึ้น
Lewy Blue

1
@ Looeee คุณช่วยส่งรหัสของคุณได้ไหมฉันสนใจกราฟิกนี้มาก
x-rw

ใช่คุณสามารถค้นหารหัสของฉันได้ที่นี่: github.com/looeee/blackthread-heroku/tree/master/assets/js/src/ ...... และเวอร์ชันสด: blackthread.io/experiments/eschersketch จริงๆแล้วมันนานมาก ที่นี่ฉันจำไม่ได้ว่าในรหัสฟังก์ชั่นที่แก้ปัญหานี้คืออะไร แต่ถ้าคุณมีปัญหาในการทำความเข้าใจมันทำให้ฉันอีกความคิดเห็นที่นี่และฉันจะดู
Lewy Blue

คำตอบ:


8

ฉันเดาว่าเพื่อให้พื้นผิวดูถูกต้องคุณจะต้องแบ่งการตกแต่งภายในของสามเหลี่ยมด้วยและประมาณการทำแผนที่ UV แบบไม่เป็นเชิงเส้นภายใน

ขณะนี้ดูเหมือนว่าคุณกำลังแบ่งย่อยรอบขอบของสามเหลี่ยมและสร้างแฟนของสามเหลี่ยมขนาดเล็กระหว่างขอบและ incenter นี่จะดีถ้าคุณแค่แสดงสามเหลี่ยมในสีทึบ แต่เมื่อใช้พื้นผิวคุณจะไม่ต่อเนื่องที่ขอบเขตของเขตย่อยเหล่านั้นเนื่องจากพื้นผิวนั้นถูกเหยียดเป็นเส้นตรงข้ามสามเหลี่ยมแต่ละแบ่งย่อยและไม่ถูกต้องใกล้เคียงกับการทำแผนที่ซึ่งเกินความจริงตามแนวรัศมี

คุณจะต้องแบ่งย่อยตามแกนทั้งสองดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

และจัดตำแหน่งจุดยอดทั้งหมดอย่างเหมาะสมในพื้นที่หน้าจอและพื้นที่ UV เพื่อประมาณพิกัดไฮเพอร์โบลิกในด้านในของสามเหลี่ยม หากคุณแบ่งย่อยอย่างละเอียดเพียงพอสิ่งนี้ควรสร้างภาพลวงตาของการทำแผนที่พื้นผิวโค้งอย่างต่อเนื่อง


1
ขอบคุณฉันจะลองทำสิ่งนี้ มันเป็นหนึ่งในวิธีดั้งเดิมของฉันในการสร้างรูปหลายเหลี่ยม แต่มีความซับซ้อนทางคณิตศาสตร์มากกว่าดังนั้นฉันจึงใช้วิธีที่ง่ายกว่า ฉันจะให้อีกนัดแล้วรายงานกลับ
Lewy Blue

ขอบคุณ. ฉันสามารถแก้ไขข้อเสนอแนะของคุณเป็นโซลูชันได้ ดูการแก้ไขของฉันด้านบน
Lewy Blue
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.