คำถามติดแท็ก computational-geometry

8
วิธีการคำนวณตำแหน่ง / เครื่องหมายมุมของสี่เหลี่ยมหมุน / เอียง
ฉันมีองค์ประกอบสองอย่างคือจุด 2D และพื้นที่สี่เหลี่ยม จุดแทนจุดกึ่งกลางของพื้นที่นั้น ฉันรู้ถึงความกว้างและความสูงของพื้นที่นั้นด้วย และพื้นที่เอียง 40 °เทียบกับกริด ตอนนี้ฉันต้องการคำนวณตำแหน่งสัมบูรณ์ของแต่ละมุมของพื้นที่เอียงนั้นโดยใช้ข้อมูลนี้เท่านั้น เป็นไปได้ไหม

1
วิธีแก้ไขการชนกันของรูปร่างผสมโดยใช้ SAT?
SATเป็นวิธีที่เหมาะสมในการพิจารณาการชนกันระหว่างรูปหลายเหลี่ยมนูนโดยพลการ คุณยังจะได้เวกเตอร์ที่จำเป็นในการแก้ไขการชนกัน เพื่อแก้ไขปัญหาการชนกันระหว่างรูปร่างที่ซับซ้อน (แบบไม่นูน) ฉันกำลังคิดถึงรูปทรงผสมซึ่งประกอบด้วยรูปหลายเหลี่ยมนูนหลายรูป หากการชนเกิดขึ้นในช่วงกว้าง (เช่นวงกลมกับวงกลมหรือ AABB เทียบกับ AABB) การชนจะได้รับการแก้ไขโดยการตรวจสอบรูปหลายเหลี่ยมแต่ละรูปในรูปผสมกับรูปหลายเหลี่ยมแต่ละรูปในรูปสารประกอบอื่น ๆ ฉันสงสัยว่าวิธีที่ดีที่สุดในการแยกวัตถุจริงๆคืออะไร? วิธีการที่ไร้เดียงสาคือการเอาเวกเตอร์ที่มีขนาดใหญ่ที่สุดมาใช้เพื่อแยกกัน ในภาพต่อไปนี้จะเป็นV 2 อย่างไรก็ตามหากการแยกเวกเตอร์ชี้ไปในทิศทางที่ต่างกันการชนกันจะไม่สามารถแก้ไขได้ในทันทีและอาจต้องมีการวนซ้ำหลายครั้ง ดังนั้นในภาพถัดไปเราจะแยกโดยใช้V 1และในการวนซ้ำอีกครั้งโดยV 2 (หรือบางสิ่งที่ใกล้เคียงกับ V 2เนื่องจากรูปร่างจะเคลื่อนที่ตามจำนวน V 1 ) วิธีการนี้จะล้มเหลวเมื่อแยกเวกเตอร์ที่ชี้ไปในทิศทางตรงกันข้ามของกันและกันหรือในกรณีเช่นที่แสดงในภาพต่อไปนี้: ที่นี่เราจะวนซ้ำระหว่างรัฐด้านซ้ายและรัฐด้านขวาอย่างไม่สิ้นสุด ดังนั้นเพื่อถามคำถามจริงที่นี่: วิธีการที่เหมาะสมกับปัญหานี้คืออะไร? ฉันเดาว่าการใช้รูปหลายเหลี่ยมแบบผสมสำหรับรูปร่างที่ซับซ้อนเป็นความคิดที่สมเหตุสมผล แต่ฉันสงสัยจริงๆว่าควรแก้ไขการชนกันอย่างไรในกรณีนี้ ฉันจะตรวจจับจุดจบได้อย่างไรตามที่แสดงในภาพที่สาม

6
วิธีที่เร็วที่สุดในการตรวจสอบว่า AABB สองตัวกำลังทำการตัดกันคืออะไร
ฉันมี AABB สองตัวที่กำลังเคลื่อนที่วิธีที่เร็วที่สุดในการตรวจสอบว่าพวกมันจะตัดกันภายใต้เฟรมอย่างไร โดยการย้ายฉันหมายถึงไม่เพียง แต่ตรวจสอบด้วยวิธีการสี่แยกสี่เหลี่ยมตามปกติฉันหมายถึงการทดสอบง่ายๆแบบง่ายๆที่จะส่งกลับค่าบูลีนไม่มีเวลาตีหรืออะไรอย่างอื่น สิ่งที่ฉันคิดคือการทำแบบนี้: แต่รูปหกเหลี่ยมนั้นค่อนข้างซับซ้อนและฉันไม่รู้วิธีคำนวณจุดตัด AABB - รูปหลายเหลี่ยมอาจมีวิธีที่ง่ายกว่านี้ไหม ภาษาการเขียนโปรแกรมใด ๆ ที่คุณชอบมากที่สุดฉันสามารถพอร์ตได้อย่างง่ายดาย ขอบคุณ

1
การสร้างรูปทรงเรขาคณิตตามขั้นตอน
เมื่อไม่นานมานี้ฉันได้ตรวจสอบ SceneKit สำหรับ OS X และสังเกตว่ามีวิธีการหลายอย่างจากโรงงานเพื่อสร้างรูปทรงเรขาคณิตเช่น กล่อง, แคปซูล, กรวย, ทรงกระบอก, เครื่องบิน, ปิรามิด, ทรงกลม, พรูและหลอด ฉันสนใจที่จะเพิ่มรูปร่างดั้งเดิมให้กับนักแสดงของฉัน แต่ฉันพยายามหาแหล่งที่เหมาะสมที่ฉันสามารถรวบรวมความเข้าใจเกี่ยวกับการสร้างขั้นตอนได้ มีทรัพยากรหลายอย่างที่อธิบายถึงทฤษฎี แต่ไม่มีซอร์สโค้ดที่เหมาะสมในการสำรองข้อมูล SceneKit จัดเตรียมวิธีการจากโรงงานซึ่งอนุญาตให้ตั้งค่าคุณลักษณะของรูปร่างดังกล่าวแบบไดนามิก ในกรณีของกล่องคุณสามารถระบุค่าจำนวนเต็มสำหรับจำนวนความกว้างความสูงและส่วนความลึกที่แต่ละใบหน้าควรแบ่งออกเป็น ฉันเข้าใจทฤษฎี แต่ขาดความรู้ในการเริ่มต้นการแบ่งใบหน้าเรขาคณิตเพื่อให้ได้ผลตามที่ต้องการ จุดยอดสำหรับแต่ละรูปร่างนั้นค่อนข้างง่ายในการสร้างลูปแบบง่าย ๆ สิ่งที่ทำให้ฉันตกใจคือการรู้ว่าจะสร้างใบหน้าหรือประสานงานพื้นผิวที่เหมาะสมสำหรับแต่ละใบหน้า สามารถคำนวณ Normals ต่อหน้าดังนั้นฉันค่อนข้างมั่นใจว่าฉันสามารถบรรลุสิ่งที่ฉันต้องการได้ แต่เพิ่งรู้ว่าจะเริ่มจากตรงไหน ใครสามารถให้รายละเอียดเกี่ยวกับเรขาคณิตเชิงกระบวนงานได้บ้าง? สิ่งที่ฉันต้องการจริงๆคือซอร์สโค้ดเพื่อรวบรวมข้อมูลบางอย่าง ฉันค้นหาบทเรียนในระดับสูงและต่ำ แต่มีไซต์หรือบล็อกที่เหมาะสมเพียงเล็กน้อยเท่านั้น หนังสือที่ดีแบบฝึกหัดบล็อกหรือรายงานการวิจัยใด ๆ ที่จะได้รับการชื่นชม แก้ไขตามความคิดเห็น ฉันควรชี้แจงว่าฉันรู้วิธีสร้างจุดยอดสำหรับรูปทรงพื้นฐานซึ่งส่วนใหญ่สามารถทำได้โดยใช้ลูปง่าย สิ่งที่ฉันไม่เข้าใจคือวิธีการสร้างใบหน้าจากอาร์เรย์ของจุดยอดที่สร้างขึ้น ฉันจะสร้างแถบสามเหลี่ยมหรือสามเหลี่ยมจากจุดยอดที่ดูเหมือนไม่มีการเรียงลำดับได้อย่างไร ฉันคิดว่าเมื่อฉันผ่านจุดนี้ไปแล้วฉันสามารถสร้างบรรทัดฐานจากแต่ละหน้าได้ ในขณะที่ฉันยังไม่ได้พิจารณาเรื่องนี้ฉันได้เห็นการอ้างอิงจำนวนมากเกี่ยวกับเรื่องนี้และมั่นใจว่ามันจะง่ายพอที่จะใช้ เป็นการดีที่ฉันต้องการที่จะสามารถสร้างรูปทรงเรขาคณิตจากชุดของคุณสมบัติที่กำหนดเช่นวิธีที่ SceneKit ให้ ให้ SceneKit ทำไปแล้วและคุณสามารถทำสิ่งที่คล้ายกันใน Blender …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.