วิธีการสร้างขอบและใบหน้าของรูปร่างดั้งเดิมเช่นกล่องกรวยและสิ่งที่คุณอ้างถึงคือการสร้างขอบในเวลาเดียวกันกับที่คุณสร้างจุดยอด ในความเป็นจริงคุณควรสร้างจุดยอดในทางตรรกะที่ทำให้ง่ายต่อการคำนวณขอบและใบหน้าตาม
มีอัลกอริธึมที่ใช้เป็นชุดข้อมูลของจุดในอวกาศและคำนวณสิ่งที่เรียกว่า "การตั้งค่าจุดสามเหลี่ยม " เหนือมัน แต่ปัญหาของการตั้งค่าการกำหนดตำแหน่งสามเหลี่ยมคือปัญหาสมบูรณ์ - NPเพื่อให้มันเร็วขึ้นที่จะทำให้ขอบและใบหน้า ในขณะที่คุณไปกว่าจะคำนวณจุดยอดและให้อัลกอริทึมทำงาน เพียงแจ้งให้คุณทราบว่ามีวิธีแก้ปัญหานี้อยู่
นอกเหนือจากวิธีการแก้ปัญหาที่ไม่มีประสิทธิภาพนี้ฉันคิดว่าคุณสามารถปฏิบัติดั้งเดิมได้ในแต่ละกรณีเช่นในตัวอย่างที่ตามมา
ตาข่ายเป็นจุดและใบหน้า ขอบจะมีอยู่ในคำอธิบายของใบหน้ายกเว้นว่าตาข่ายของคุณมีเส้นที่ไม่ได้ทำการแต่งหน้า จุดยอดคือ tuples ของ 3 จุดลอยตัวพิกัด ขอบเป็นคู่ของการอ้างอิงถึงจุดยอด แต่จากนั้นอีกครั้งคุณแน่นอนไม่ต้องการพวกเขา พูดเช่นว่าจุดยอดของคุณอยู่ในอาร์เรย์ที่จัดทำดัชนี ขอบของคุณก็อาจเป็นดัชนีคู่ของอาร์เรย์นั้น ใบหน้ามีแฝดสามของการอ้างอิงไปยังจุดหรือแฝดสามของดัชนีในกรณีอาร์เรย์จัดทำดัชนี
คุณควรนับจำนวนจุดยอดขอบและใบหน้าที่ประกอบขึ้นเป็นรูปทรงดั้งเดิมแต่ละอันเพราะการนับพวกมันหมายถึงการเข้าใจคุณสมบัติของวัตถุซึ่งช่วยให้คุณกำหนดวิธีการที่คุณสร้างขึ้นโดยใช้ลูปและ เครื่องมืออื่น ๆ ที่เราจะเห็น
รูปกรวย
สำหรับกรวยที่มีจุดยอดn + 2ขอบ3nและใบหน้า2n :
- ทำสองจุดยอดต่าง ๆ
- สร้างวงกลมรอบจุดยอดหนึ่งจุด (จุดยอดฐาน) ซึ่งอยู่ภายในระนาบตั้งฉากกับส่วนระหว่างจุดยอดสองจุดแรก หวังว่าคุณสามารถสร้างวงกลมโดยใช้ตรีโกณมิติได้ไหม? นั่นคือจุดยอดทั้งหมดของกรวย นั่นก็เป็นหนึ่งในสามของขอบทั้งหมด (มีขอบnในวงกลมและรวมทั้งหมด3n )
- ทำให้nขอบฐานจากจุดสุดยอดไปยังnจุดในวงกลม คุณสามารถทำครึ่งหนึ่งของใบหน้า (นั่นคือnใบหน้า) ในขณะที่คุณทำเช่นนั้น
- ยี่ห้อnขอบจากจุดสุดยอดเคล็ดลับให้กับnจุดในวงกลม คุณสามารถสร้างใบหน้าอีกครึ่งหนึ่ง (นั่นคือnใบหน้า) เช่นเดียวกับที่คุณทำ
1)
2)
3)
4)
ผลลัพธ์สุดท้าย:
คุณยังสามารถสร้างขอบและใบหน้าในขณะที่คุณเรียกใช้การวนซ้ำที่ทำให้วงกลม ความซับซ้อนเดียวกันสิ่งเดียวกัน สร้างจุดสุดยอดหนึ่งจุดบนวงกลมเก็บไว้ในอาร์เรย์ของจุดยอดของคุณเพิ่มขอบที่สอดคล้องกัน (คู่ของดัชนี) เข้ากับอาร์เรย์ของดัชนีถ้าคุณรู้สึกว่ามันและในที่สุดก็เพิ่มใบหน้าที่สอดคล้องกับอาร์เรย์ของดัชนีสามส่วนของคุณ . ไปยังจุดสุดยอดถัดไป
ทรงกระบอกและท่อ: ไม่ทำงานสองครั้งเหมือนกันและล่าม
อีกครั้งสำหรับหลอดมันเริ่มต้นด้วยจุดสุดยอดและวงกลมซึ่งจะเป็นศูนย์กลางของทั้งด้านบนหรือด้านล่างของกระบอกสูบ:
- ทำจุดสุดยอด
- ทำวงกลมรอบจุดสุดยอด เพิ่มขอบ (ถ้าคุณต้องการขอบ) ระหว่างจุดยอดที่ต่อเนื่องของวงกลมและระหว่างจุดยอดกึ่งกลางและจุดสุดยอดของวงกลมแต่ละจุด เพิ่มใบหน้าระหว่าง triplet ของแต่ละจุดยอดที่ทำจากจุดยอดกึ่งกลางและจุดยอดสองจุดต่อเนื่องบนวงกลม
- ทำสำเนาทั้งหมดนั้นแปลสำเนาในทิศทางตั้งฉากกับฐานที่คุณเพิ่งทำโดยความยาวของทรงกระบอกที่ต้องการ
- เชื่อมโยงด้านบนและด้านล่าง
ในการเชื่อมโยงด้านบนและด้านล่างคุณต้องทำการล่ามระหว่างคู่ของจุดยอดที่เผชิญหน้ากัน คิดล่วงหน้าแล้วทำไมไม่ทำตัวเองให้เป็นฟังก์ชั่นที่ทำให้ใบหน้ารูปสามเหลี่ยมสองอันออกมาจากจุดยอดทั้งสี่?
เสร็จสิ้น โปรดสังเกตว่าเวลานี้เราใช้ความจริงที่ว่าโครงสร้างเดียวกัน (วงกลม + กลาง) ปรากฏขึ้นสองครั้งในทรงกระบอกเพื่อใช้ทางลัด เราไม่ได้มีเพื่อให้ทุกจุดขอบและใบหน้าด้วยมือขัดกับกรวยที่มันเป็นสิ่งจำเป็น
ตามหลักการความเกียจคร้านนี้มันเป็นไปได้ที่จะสร้างหนึ่งในสี่ของวงกลมแล้วทำซ้ำและอีกครั้งเพื่อสร้างวงกลมเต็มรูปแบบด้วยการแปลงที่ง่ายมาก (ใช้ได้กับวงกลมใด ๆ ดังนั้นด้วยกรวย) รูปร่างไม่ซับซ้อน
คุณต้องใช้คุณสมบัติทางเรขาคณิตของวัตถุที่คุณสร้างเพื่อทำให้การสร้างนั้นง่ายขึ้น กล่าวคือพวกเขาสมมาตรและค่าคงที่
สำหรับทรงกระบอกอย่าทำจุดสุดยอดพื้นฐานแค่ทำให้วงกลมทำซ้ำแปลแปลทำล่ามทำเสร็จแล้ว
ทรงกลมและแคปซูล: เพิ่มความซับซ้อน แต่ก็ไม่ได้ผลเหมือนกันสองเท่า
ในการสร้างแคปซูลเราต้องการสร้างทรงกลม UV แบ่งออกเป็นสองส่วนแปลครึ่งแรกจากนั้นเชื่อมทั้งสองกับด้านข้างของแคปซูล
อีกครั้งเป็นไปได้ที่จะสร้างทรงกลมเพียงหนึ่งในแปด (!!) จากนั้นทำซ้ำและย้อนกลับจากนั้นทำซ้ำและย้อนกลับผลลัพธ์ยกเว้นตามแกนอื่น ฯลฯ เพื่อรับทรงกลมเต็มใน 4 ขั้นตอน (สร้างที่แปด ทำซ้ำและย้อนกลับสามครั้ง) อาจ overkill แต่น้อยกว่าในกรณีของวงกลม
ทรงกลม UV ที่เรียบง่าย:
ในความเป็นจริงเราทำเพียงครึ่งเดียวเท่านั้น (ตัวอย่าง) ทำซ้ำครึ่งหนึ่งหันสำเนากลับด้านและแปลตามความยาวของแคปซูล:
เราเชื่อมโยงครึ่งบนและล่าง:
การทำงานอย่างหนักจริง ๆ บ้างมาจากตรีโกณมิติที่ทำให้เกิดเป็นทรงกลม ชุดของจุดยอดทั้งหมดที่อยู่ในทรงกลม UV สามารถอธิบายได้ว่าเป็นชุดของจุดทั้งหมดของรูปแบบ:
โดยที่Rคือรัศมีของทรงกลมและสำหรับจำนวนเต็มบวกแม้แต่Nบางตัวเรามีค่าคงที่
θ = ×π / N ,
kและnเป็นจำนวนเต็มกับkที่แตกต่างจาก0ไป2N-1และnที่แตกต่างจาก-N / 2เพื่อ+ N / 2
ที่จะทำให้ครึ่งทรงกลมหรือทรงกลมที่แปดของคุณมีการ จำกัด การชุดของค่าที่ถ่ายโดยkและn
ถ้าkเป็นตัวเลขจริงและไม่ใช่แค่จำนวนเต็มคุณจะได้ทรงกลมทั้งหมดไม่ใช่แค่จุดยอดบนพื้นผิว ดังนั้นสิ่งที่เราได้ทำที่นี่จะrasterizing สมการพื้นผิวของดั้งเดิม
พรูที่น่ากลัว : มันง่ายมากหลังจากที่พวกเราได้เห็นกันแล้ว!
อีกครั้งตรีโกณมิติมากขึ้นจุดยอดมากล่ามมากขึ้นสมมาตรมากขึ้นค่าคงที่มากขึ้น ... เรขาคณิตมากขึ้น! ค้นหาสมการสำหรับพื้นผิวของพรู "rasterize มัน" อย่างถูกต้องลดความซับซ้อนของปัญหาโดยใช้ symmetries (ชัดเจน) ของพรูและในที่สุดวนรอบชุดของจุดยอดที่คุณเพิ่งกำหนดและทำขอบและใบหน้าตามที่คุณ ไป!
ดู? ตรงไปตรงมาโดยสิ้นเชิง