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

สาขาคณิตศาสตร์ที่เกี่ยวข้องกับคำถามของรูปร่างขนาดตำแหน่งสัมพัทธ์ของตัวเลขและคุณสมบัติของพื้นที่

4
ขั้นตอนการสร้างอาคารของพื้นที่เฉพาะ
ตัวเองและทีมกำลังทำงานในเกมตัวสร้างโรงงานที่ให้ผู้เล่นโรงงานสุ่มในช่วงเริ่มต้นของเกม เพื่อให้แน่ใจว่ามี "ความเป็นธรรม" โรงงานที่สร้างแบบสุ่มจะมีพื้นที่ภายในไม่กี่หน่วย (ค่าตัวยึด) 30 มันค่อนข้างง่ายในการเขียนเครื่องกำเนิดสี่เหลี่ยมแบบสุ่มขั้นพื้นฐานเพื่อให้ตรงตามข้อกำหนดเหล่านี้ แต่เป้าหมายของเราคือโรงงานมีความซับซ้อนมากขึ้นอาจประกอบด้วย 2, 3, หรือ 4 สี่เหลี่ยมตัดกันเพื่อสร้างรูปร่างที่ซับซ้อนมากขึ้น (คิดว่า L อาคารรูปตัว U และ O) ฉันพยายามสร้างสี่เหลี่ยมผืนผ้าสุ่มแล้วใช้พีชคณิตพื้นฐานเพื่อเติมสี่เหลี่ยมที่ 2 แต่จนถึงตอนนี้ฉันยังไม่มีโชคในการใช้สี่เหลี่ยมมากกว่า 2 รูปและฉันก็ไม่พอใจกับผลลัพธ์ที่ได้จากการออกแบบสี่เหลี่ยมผืนผ้าเพียง 2 อัน . ข้อมูลที่เกี่ยวข้องเพิ่มเติมบางส่วน: 2D จากบนลงล่างกลศาสตร์บางตัวเป็นสไตล์แฟคเตริโอดังนั้นห้องควรมีความยาวและความกว้างที่เหมาะสมเพื่อให้มีที่ว่างสำหรับเครื่องจักรขณะนี้ใน Java และ Lua (สามารถใช้ห้องสมุดในตัวก็ได้ ขอบคุณล่วงหน้า! แก้ไข: เมื่อฉันพูดว่าเอาต์พุต "ดี" หรือ "ไม่ดี" เอาต์พุตที่ไม่ดีจะเป็นเอาต์พุตใด ๆ ที่มีพื้นที่ใช้งานไม่ได้โดยผู้เล่น รูปร่างของโรงงาน จำกัด ที่ผู้เล่นสามารถวางเครื่องจักรโรงงานเช่นสายพานลำเลียง ตามหลักการแล้วโรงงานไม่ควรมีพื้นที่ที่กว้างเพียง 1-2 บล็อกรูปร่างไม่ควรเป็นสี่เหลี่ยมขนาดใหญ่หนึ่งหรือสองรูปที่มีเส้น 1-2 …

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

4
อัลกอริทึมสำหรับการสร้างรูปสามเหลี่ยมที่อยู่ติดกัน
ฉันมีระบบที่คุณสามารถคลิกหนึ่งครั้งเพื่อวางโหนดในฉาก เมื่อคุณวาง 3 โหนดมันจะสร้างรูปสามเหลี่ยม เมื่อคุณวางโหนดใด ๆ ในอนาคตมันจะสร้างรูปสามเหลี่ยมใหม่โดยรวมโหนดนั้นเข้ากับ 2 โหนดที่มีอยู่ใกล้เคียงที่สุด วิธีนี้ใช้ได้ผลเกือบตลอดเวลา แต่มีข้อบกพร่องเมื่อใช้ใกล้กับสามเหลี่ยมที่มีมุมแหลมมากเพราะหนึ่งใน 2 โหนดที่ใกล้ที่สุดมักไม่ใช่สิ่งที่ควรใช้ ตัวอย่างเช่นดูภาพด้านล่าง สามเหลี่ยมสีม่วงแดงเป็นรูปแรกที่วางไว้ ถ้าฉันคลิกที่ตำแหน่งที่ทำเครื่องหมาย X สิ่งที่ฉันได้คือสามเหลี่ยมใหม่ที่มีการซ้อนทับสีน้ำเงิน สิ่งที่ฉันต้องการคือสามเหลี่ยมใหม่ที่มีการซ้อนทับสีเขียว (เช่นสมมาตรกับสีม่วงแดงหนึ่งในตัวอย่างนี้การชี้แจง: รูปสามเหลี่ยมสีเขียวและสีม่วงแดงไม่ทับซ้อนกัน - สีเขียวรูปหนึ่งทอดยาวภายใต้สีน้ำเงินหนึ่งไปยังโหนดซ้ายสุด) ฉันจะทราบได้อย่างไรว่าจุดยอดที่มีอยู่ 2 อันที่จะใช้เมื่อสร้างสามเหลี่ยมใหม่เพื่อไม่ให้รูปสามเหลี่ยมซ้อนทับเช่นนี้ แก้ไข : การค้นหาขอบที่ใกล้ที่สุดให้ผลลัพธ์ที่ดีกว่าแต่ไม่ใช่การค้นหาที่สมบูรณ์แบบ พิจารณาสถานการณ์นี้: การทดสอบ 'edge edge ที่ใกล้ที่สุด' นั้นคลุมเครือและสามารถคืนค่า AB หรือ AC (เนื่องจากจุดที่ใกล้ที่สุดไปที่ X สำหรับทั้งคู่อยู่ที่ A) ผลลัพธ์ที่ต้องการคือ AC เพื่อสร้างสามเหลี่ยม ACX ที่ไม่มีขอบซ้อนทับกัน ฉันจะมั่นใจผลลัพธ์นี้ได้อย่างไร (ฉันไม่จำเป็นต้องทำการทดสอบการซ้อนทับของขอบแต่ละอันในกรณีที่เป็นไทเกอร์เบรกเกอร์ถ้าเป็นไปได้เพราะฉันกังวลว่าการทดสอบขอบที่ใกล้ที่สุดนั้นไม่จำเป็นว่าจุดที่ 2 …

1
อัลกอริทึมสำหรับ "รักษา" หลายรูปสี่เหลี่ยมให้เป็นรูปสี่เหลี่ยมผืนผ้าจำนวนน้อยลงหรือไม่?
สมมติว่าฉันมีตารางของสี่เหลี่ยมของรูปร่างและสีที่แตกต่างกันและฉันต้องการลด (ใกล้ถึงความเหมาะสมดีที่สุดไม่จำเป็นต้องดีที่สุด) จำนวนของรูปสี่เหลี่ยมเพื่อแสดงเค้าโครงสีเดียวกัน ภาพด้านบนเป็นกรณีที่ง่ายมากและช่องว่างระหว่างสี่เหลี่ยมใช้สำหรับการสร้างภาพข้อมูลเท่านั้น - จริง ๆ แล้วพวกเขาจะได้รับการบรรจุแน่น ชื่อวิธีหรืออัลกอริทึม (ยินดีที่จะ google) ที่สามารถช่วยฉันทำสิ่งนี้คืออะไร?

3
ค่าสามค่าแรกที่อธิบายระนาบ 3 มิติเป็นเวกเตอร์ 3 มิติจริงหรือไม่?
เครื่องบิน 3d a,b,c,dมักจะถูกกำหนดให้เป็น ที่a,b,cจริงแล้วx,y,zพิกัดของเวกเตอร์ 3 มิติด้วยdการกำหนดการหมุนของเครื่องบินจะเหมือนกับข้อมูลการหมุนของมุมแกนหรือไม่?
13 3d  geometry 

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

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

4
ฉันจะหาทรงกลมที่ใหญ่ที่สุดที่อยู่ใน frustum ได้อย่างไร
คุณจะพบทรงกลมที่ใหญ่ที่สุดที่คุณสามารถวาดในมุมมองได้อย่างไร ดูจากด้านบนมันเป็นเช่นนี้: ที่เพิ่มเข้ามา: บน frustum ด้านขวาฉันได้ทำเครื่องหมายสี่จุดที่ฉันคิดว่าเรารู้อะไรเกี่ยวกับ เราสามารถปลดโปรเจ็กต์ทั้งแปดมุมของ frusum และศูนย์กลางของใกล้และไกลสุด เรารู้จุดที่ 1, 3 และ 4 เราก็รู้ว่าจุดที่ 2 คือระยะห่างเดียวกันจาก 3 เท่ากับ 4 จาก 3 ดังนั้นเราสามารถคำนวณจุดที่ใกล้ที่สุดในบรรทัดที่ 1 ถึง 4 ถึงจุดที่ 2 เพื่อให้ได้ ศูนย์? แต่คณิตศาสตร์และรหัสที่แท้จริงช่วยฉันได้ ฉันต้องการวาดแบบจำลอง (ซึ่งเป็นทรงกลมโดยประมาณและที่ฉันมีทรงกลมมินิบัสที่ล้อมรอบ) มีขนาดใหญ่ที่สุดเท่าที่จะเป็นไปได้ อัปเดต: ฉันได้พยายามใช้แนวทาง incircle-on-two- planeตามที่Bobobobo และ Nathan Reed แนะนำ : function getFrustumsInsphere(viewport,invMvpMatrix) { var midX = viewport[0]+viewport[2]/2, …
12 geometry 

2
การหมุนโดยพลการเกี่ยวกับทรงกลม
ฉันกำลังเขียนรหัสกลไกซึ่งช่วยให้ผู้ใช้สามารถเคลื่อนที่ไปรอบ ๆ พื้นผิวของทรงกลมได้ ตำแหน่งบนทรงกลมปัจจุบันถูกเก็บเป็นthetaและphiโดยที่thetaมุมระหว่างแกน z และการฉาย xz ของตำแหน่งปัจจุบัน (เช่นการหมุนรอบแกน y) และphiเป็นมุมจากแกน y ไปยังตำแหน่ง ฉันอธิบายว่าไม่ดี แต่มันเป็นหลักtheta = yaw,phi = pitch Vector3 position = new Vector3(0,0,1); position.X = (float)Math.Sin(phi) * (float)Math.Sin(theta); position.Y = (float)Math.Sin(phi) * (float)Math.Cos(theta); position.Z = (float)Math.Cos(phi); position *= r; ฉันเชื่อว่านี่ถูกต้อง แต่ฉันอาจผิด rฉันจะต้องสามารถที่จะย้ายในทิศทางหลอกพลสองมิติรอบพื้นผิวของทรงกลมที่จุดกำเนิดของพื้นที่โลกที่มีรัศมี ตัวอย่างเช่นการจับWควรจะย้ายไปรอบ ๆ ทรงกลมในทิศทางขึ้นไปเมื่อเทียบกับทิศทางของผู้เล่น ฉันเชื่อว่าฉันควรใช้ Quaternion เพื่อแสดงตำแหน่ง / …

3
ภาพเคลื่อนไหว Minecraft มีการฮาร์ดโค้ดในเกมหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันอยากรู้ว่าระบบอนิเมชั่นทำงานอย่างไรใน minecraft ฉันรู้สึกว่า mobs ทั้งหมดนั้นถูก hardcoded ลงในเกม ทำรอยบากนั่งที่นั่นและสร้างเมทริกซ์สำหรับกระดูกอนิเมชั่นด้วยมือทั้งหมดหรือไม่? ฉันชอบสร้างเกมขึ้นมาใหม่เพื่อความสนุกฉันอยากรู้ว่าเขาทำเช่นนี้ได้อย่างไร ถ้าเขาทำ hardcode ให้พวกเขาจริงๆ ... มีวิธีที่ดีกว่าไหม?

4
ฉันจะแก้ไขรอบสี่เหลี่ยมได้อย่างไร
ฉันต้องการสร้างแอนิเมชั่นแฟนซีที่จุดหนึ่งเดินทางไปรอบ ๆ สี่เหลี่ยมผืนผ้า tฉันต้องการที่จะหาตำแหน่งของจุดในเวลา สี่เหลี่ยมผืนผ้าจะได้รับจากX, Y, และWidthHeight มีอัลกอริทึมสำหรับสิ่งนี้หรือไม่? ฉันใช้sin/ cosสำหรับแวดวง อะไรคือวิธีที่เทียบเท่าสำหรับสี่เหลี่ยม?

1
Tessellation vs Geometry Shader
แก้ไขให้ถูกต้องหากฉันผิด แต่ทั้ง Geometry Shader และงาน Tessellation Shader นั้นเป็นการสร้างจุดยอดในกราฟิคท่อ สิ่งที่ฉันอยากรู้คือพวกเขาแตกต่างกันอย่างไรและเมื่อใดที่ฉันควรใช้อันอื่น

2
วิธี จำกัด การเคลื่อนไหว click'n'drag ไปยังพื้นที่ใด
ฉันขอโทษสำหรับชื่อทั่วไปค่อนข้าง ฉันมีเงื่อนงำไม่มากเกี่ยวกับวิธีการทำสิ่งที่ฉันพยายามทำซึ่งทำให้ยากยิ่งขึ้นแม้จะค้นคว้าวิธีแก้ปัญหาที่เป็นไปได้ ฉันพยายามใช้เครื่องหมายบอกทาง (อาจจะมีชื่อที่เหมาะสมที่สุดสำหรับมัน แต่นี่คือสิ่งที่ดีที่สุดที่ฉันสามารถหาได้) ด้านหน้าของผู้เล่นจะมีเครื่องหมายบอกทางซึ่งจะเป็นตัวกำหนดว่าผู้เล่นจะเคลื่อนที่อย่างไรเมื่อเขาวางแผนที่จะเสร็จ ผู้เล่นสามารถคลิกและลากเครื่องหมายไปยังตำแหน่งที่พวกเขาเลือก แต่เครื่องหมายสามารถเคลื่อนย้ายภายในพื้นที่ทำงานที่กำหนดไว้ (บิตสีเทา) ดังนั้นตอนนี้ฉันติดอยู่กับปัญหาที่สอง: ก่อนอื่นฉันจะกำหนดพื้นที่ทำงานได้อย่างไร ฉันสามารถจินตนาการได้ว่าเวกเตอร์สองตัวที่มีผู้เล่นเป็นจุดเริ่มต้นในการสร้างมุมที่ใช้งานได้และบางทีอาร์คทั้งสองนั้นอาจมาจากวงกลมที่มีศูนย์กลางอยู่ที่ผู้เล่นอยู่ แต่ฉันไม่รู้ว่าจะเอาสิ่งนี้ทั้งหมด ด้วยกัน. และประการที่สองหลังจากที่ฉันได้กำหนดพื้นที่ที่สามารถวางเครื่องหมายได้ฉันจะบังคับได้อย่างไรว่าเครื่องหมายควรอยู่ในพื้นที่นั้นเท่านั้น ตัวอย่างเช่นหากผู้เล่นคลิกและลากเครื่องหมายไปรอบ ๆ มันอาจเคลื่อนที่ได้อย่างอิสระภายในพื้นที่ทำงาน แต่ต้องไม่ออกจากขอบเขตของพื้นที่ ตัวอย่างเช่นหากผู้เล่นเริ่มลากเครื่องหมายขึ้นด้านบนมันจะเลื่อนขึ้นไปจนถึงจุดสิ้นสุดของพื้นที่ทำงาน (แผนภาพแรกด้านล่าง) แต่ถ้าหลังจากผู้เล่นเริ่มลากไปด้านข้างเครื่องหมายจะต้องติดตามการลากในขณะที่ยังคงอยู่ ภายในพื้นที่ (แผนภาพที่สองด้านล่าง) ฉันหวังว่ามันจะไม่ทำให้สับสนทั้งหมด ขอบคุณเพื่อน. แก้ไข:ในกรณีที่สร้างความแตกต่างฉันใช้ C ++ กับ Marmalade SDK

5
เราจะกำหนดความยาวของเส้นทางได้อย่างไร?
ฉันมีเกมที่ต้องการให้ผู้เล่นแต่ละคนเคลื่อนที่ตามเส้นทางที่ระบุ ฉันวาดเส้นทางโดยใช้เส้นโค้งเบซิเยร์ ฉันจะกำหนดความยาวรวมของจริง (ไม่ใช่แบบเส้นตรง) ของเส้นทางและระยะทางที่ผู้เล่นแต่ละคนทำไว้ได้อย่างไร (ระยะห่างระหว่างจุดเริ่มต้นและจุดที่ระบุบนเส้นทาง) UPDATE: พา ธ ถูกแสดงในระนาบคาร์ทีเซียน (2D)

1
ปัญหาการตรวจจับการชนวงกลม -line
ขณะนี้ฉันกำลังพัฒนาโคลนการฝ่าวงล้อมและฉันได้ตีสิ่งกีดขวางบนถนนในการตรวจจับการชนกันระหว่างลูกบอล (วงกลม) และอิฐ (รูปหลายเหลี่ยมนูน) ทำงานอย่างถูกต้อง ฉันใช้การทดสอบการตรวจจับการชนกันของข้อมูลเส้นวงกลมโดยที่แต่ละบรรทัดแสดงถึงและขอบบนก้อนอิฐรูปหลายเหลี่ยมนูน ส่วนใหญ่แล้วการทดสอบแบบ Circle-Line นั้นทำงานได้อย่างถูกต้องและจุดของการชนนั้นได้รับการแก้ไขอย่างถูกต้อง การตรวจจับการชนกันทำงานอย่างถูกต้อง อย่างไรก็ตามในบางครั้งรหัสตรวจจับการชนของฉันคืนเท็จเนื่องจากการเลือกปฏิบัติเชิงลบเมื่อลูกบอลตัดกับก้อนอิฐ การตรวจหาการชนกันล้มเหลว ฉันตระหนักถึงความไร้ประสิทธิภาพด้วยวิธีนี้และฉันใช้กล่องที่จัดเรียงตามแนวแกนเพื่อลดจำนวนอิฐที่ทดสอบ ความกังวลหลักของฉันคือถ้ามีข้อบกพร่องทางคณิตศาสตร์ในรหัสของฉันด้านล่าง /* * from and to are points at the start and end of the convex polygons edge. * This function is called for every edge in the convex polygon until a * collision is detected. */ …

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