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

คำถามคณิตศาสตร์ที่เกี่ยวข้องกับคณิตศาสตร์เรขาคณิตแคลคูลัสสูตรและการคำนวณอื่น ๆ ที่ใช้ในการพัฒนาเกม

7
ฉันต้องการวัตถุจุดและเวกเตอร์หรือไม่ หรือเพียงแค่ใช้วัตถุ Vector เพื่อแสดงว่าเป็นจุดหรือไม่
การสร้างส่วนประกอบของเครื่องยนต์ที่ฉันกำลังพัฒนาพร้อมกับเพื่อน (จุดประสงค์การเรียนรู้) ฉันมาถึงข้อสงสัยนี้ ตอนแรกเรามีตัวสร้าง Point ดังต่อไปนี้: var Point = function( x, y ) { this.x = x; this.y = y; }; แต่พวกเขาเราเริ่มเพิ่มคณิตศาสตร์เวกเตอร์ลงไปและพวกเขาตัดสินใจเปลี่ยนชื่อเป็น Vector2d แต่ตอนนี้วิธีการบางอย่างค่อนข้างสับสน (อย่างน้อยในความคิดของฉัน) เช่นต่อไปนี้ซึ่งใช้ในการสร้างบรรทัด: //before the renaming of Point to Vector2, the parameters were startingPoint and endingPoint Geometry.Line = function( startingVector, endingVector ) { //... }; ฉันควรสร้างนวกรรมิกเฉพาะสำหรับวัตถุ Point …

2
ฉันจะสร้างตาข่ายนำทางสำหรับตารางย่อยได้อย่างไร
ฉันยังไม่ได้เริ่มเขียนโปรแกรมสำหรับอันนี้ แต่ฉันต้องการที่จะดูว่าฉันจะทำอย่างไรต่อไป สมมติว่าฉันมีตารางของกระเบื้องขนาดเท่ากันทั้งหมดที่ผ่านได้และบางอันไม่มี ฉันจะสร้างโครงข่ายการนำทางของรูปหลายเหลี่ยมจากกริดนี้ได้อย่างไร ความคิดของฉันคือการนำกระเบื้องที่ไม่สามารถผ่านได้และขยายเส้นจากขอบเพื่อสร้างรูปหลายเหลี่ยม ... นั่นคือทั้งหมดที่ฉันได้รับ คำแนะนำใด ๆ?

1
กำหนดความยาวส่วนโค้งของเส้นโค้ง Catmull-Rom เพื่อเคลื่อนที่ด้วยความเร็วคงที่
ฉันมีเส้นทางที่กำหนดโดยการต่อข้อมูลของ Catmull-Rom splines ฉันใช้วิธีการคงที่ Vector2.CatmullRom ใน XNA ที่ช่วยให้การแก้ไขระหว่างจุดที่มีค่าไปจาก 0 ถึง 1 ไม่ใช่เส้นโค้งทุกเส้นในเส้นทางนี้ที่มีความยาวเท่ากัน สิ่งนี้ทำให้เกิดความแตกต่างของความเร็วถ้าฉันปล่อยให้น้ำหนักเคลื่อนที่ด้วยความเร็วคงที่สำหรับทุกเส้นโค้งในขณะที่เดินไปตามเส้นทาง ฉันสามารถแก้ไขได้โดยให้ความเร็วของน้ำหนักขึ้นอยู่กับความยาวของเส้นโค้ง ฉันจะกำหนดความยาวของเส้นโค้งดังกล่าวได้อย่างไร ฉันควรจะประมาณโดยตัดเส้นโค้งเป็น 10 เส้นตรงและรวมความยาวของพวกเขา? ฉันใช้สิ่งนี้สำหรับการทำแผนที่พื้นผิวแบบไดนามิกในตาข่ายที่สร้างขึ้นที่กำหนดโดยเส้นโค้ง

6
สุดยอด C ++ Math Library สำหรับ Game Engine? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังมองหา C-math คณิตศาสตร์ห้องสมุด opensource ที่รวดเร็วสำหรับเครื่องมือเกมของฉันด้วยคุณสมบัติดังต่อไปนี้: เร็ว (sse?) เวกเตอร์ การฝึกอบรม quaternions เหมาะสำหรับทั้ง OpenGL และ Directx
18 c++  mathematics 

5
หนังสือทฤษฎีคณิตศาสตร์ 3D ที่ดี [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันได้พัฒนาการดัดแปลงสำหรับ Source engine มานานกว่าหนึ่งปีแล้ว แต่ตอนนี้ฉันกำลังประสบปัญหาบางอย่างเกี่ยวกับอาวุธการเคลื่อนที่ (ฟิสิกส์ของผู้เล่น) และการตอบสนองของผู้เล่นจากวัตถุระเบิด ทั้งหมดนี้เป็นเพราะจุดอ่อนของฉันในวิชาคณิตศาสตร์ !!! คุณสามารถแนะนำหนังสือแบบฝึกหัดหรือตำราอื่น ๆ (ซึ่งช่วยคุณ)
17 3d  books  mathematics 

2
ฉันจะใช้ผลิตภัณฑ์ดอทเพื่อรับมุมระหว่างเวกเตอร์สองตัวได้อย่างไร
ฉันกำลังเรียนรู้ที่จะใช้เวกเตอร์ปกติในเกมของฉัน ฉันเรียนรู้ว่าเพื่อทราบมุมระหว่างเวกเตอร์สองตัวฉันสามารถใช้ผลิตภัณฑ์ดอท สิ่งนี้ทำให้ฉันมีค่าระหว่าง -1 และ 1 ที่ 1 หมายถึงเวกเตอร์นั้นขนานกันและหันไปในทิศทางเดียวกัน (มุมคือ 180 องศา) -1 หมายถึงพวกมันขนานและหันหน้าไปทางทิศทางตรงกันข้าม (ยังคง 180 องศา) 0 หมายถึงมุมระหว่างพวกเขาคือ 90 องศา ฉันอยากรู้วิธีแปลงผลคูณดอทของเวกเตอร์สองตัวเป็นมุมจริงเป็นองศา ตัวอย่างเช่นหากผลิตภัณฑ์ดอทของเวกเตอร์สองตัวคือ0.28อะไรมุมที่สอดคล้องกันคือระหว่าง 0 ถึง 360 องศา

1
สร้างฟิสิกส์สไตล์เรโทร / NES ขึ้นใหม่ด้วยความไม่แม่นยำโดยเจตนา
พื้นหลัง: ฉันมีปัญหาในการทำให้การกระโดดโค้งถูกต้องสำหรับโปรเจ็กต์ retro platformer ของฉัน เกมดั้งเดิมมีไว้สำหรับ NES และความเร็วของผู้เล่นจะถูกเก็บไว้ในสองส่วน: หนึ่งไบต์สำหรับจำนวนเต็มและอีกส่วนสำหรับเศษส่วน Gravity ถูกเพิ่มเข้ากับความเร็ว Y ของผู้เล่นในอัตรา 0.25 / เฟรม เมื่อผู้เล่นกระโดดความเร็ว Y ของเขาถูกตั้งไว้ที่ -4.64453125 ส่วนที่เหลือของเส้นโค้งการกระโดดจะถูกปล่อยให้อยู่กับแรงโน้มถ่วง ในขณะที่ผู้เล่นเพิ่มความเร็วแนวตั้งของเขาให้เป็น 0 ในอัตรา 0.25 / เฟรม เมื่อความเร็วของผู้เล่นถึงค่าน้อยกว่าศูนย์อย่างไรก็ตามความเร็วจะเปลี่ยนไปตามรูปแบบที่แตกต่างกัน แทนที่จะลดลงเรื่อย ๆ 0.25 ทุกเฟรมมันจะเป็นไปตามรูปแบบนี้: [1.75, -0.25, -0.25, -0.25, 1.75, -0.25, -0.25, -0.25, 1.75, ...] ดูเหมือนว่าจะมีบางอย่างเกี่ยวข้องกับจำนวนเต็มล้น ข้อมูล: นี่คือดัมพ์ของข้อมูลจากต้นฉบับ มันเป็นตารางความเร็ว Jump Curve Y-Hi Y-Lo …

6
คุณจะขนานกับการจำลองแบบ 2 มิติได้อย่างไร
คุณจะตั้งโปรแกรมการจำลองแบบสองมิติได้อย่างไรในแบบที่มันสามารถใช้พลังการประมวลผลจากแหล่งต่าง ๆ (กลุ่ม, GPU) ในตัวอย่างด้านบนอนุภาคที่ไม่มีสีจะเคลื่อนที่ไปรอบ ๆ จนกว่าพวกมันจะรวมกลุ่ม (สีเหลือง) และหยุดเคลื่อนที่ ปัญหาคือเอนทิตีทั้งหมดอาจมีปฏิสัมพันธ์ซึ่งกันและกันแม้ว่าเอนทิตีในมุมซ้ายบนไม่น่าจะโต้ตอบกับสิ่งใดสิ่งหนึ่งได้ที่ด้านล่างขวา หากโดเมนถูกแบ่งออกเป็นเซ็กเมนต์ต่าง ๆ มันอาจเร็วขึ้น แต่ถ้าเอนทิตีต้องการข้ามไปยังเซ็กเมนต์อื่นอาจมีปัญหา ในขณะนี้การจำลองนี้ใช้งานได้กับ 5,000 หน่วยงานที่มีอัตราเฟรมที่ดีฉันต้องการที่จะลองกับคนนับล้านถ้าเป็นไปได้ เป็นไปได้ไหมที่จะใช้ต้นไม้รูปสี่เหลี่ยมเพื่อเพิ่มประสิทธิภาพนี้ ข้อเสนอแนะอื่น ๆ ?

3
การเรียงลำดับของคะแนนตามลำดับตามเข็มนาฬิกา
มีอัลกอริธึมในการเรียงลำดับอาร์เรย์ของคะแนน 2D ตามลำดับตามเข็มนาฬิกาหรือไม่? ฉันกำลังจัดการสามเหลี่ยมมุมฉากในกรณีของฉันโดยเฉพาะดังนั้น 3 คะแนน อย่างไรก็ตามฉันสนใจที่จะทราบว่ามีอัลกอริธึมอยู่หรือไม่หากไม่มีวิธีง่ายๆในการคืนค่า 3 คะแนนของสามเหลี่ยมตามลำดับตามเข็มนาฬิกา แก้ไข: ฉันพยายามคำนวณคะแนนตามเข็มนาฬิกาที่สัมพันธ์กับเซนทรอยด์ของรูปหลายเหลี่ยมซึ่งเป็นรูปนูน อัปเดต: นี่คือการนำไปใช้ที่ฉันใช้โดยใช้คำตอบที่เลือกไม่ใช่ประสิทธิภาพที่สำคัญและจะเกิดขึ้นเพียงครั้งเดียวเพื่อให้ได้ผล ArrayList<PVector> pointList = new ArrayList<PVector>(); pointList.add(A); pointList.add(B); pointList.add(C); Collections.sort( pointList, new TriangleVectorComparator(origin) ); return pointList; // Comparator package triangleeditor; import java.util.Comparator; import processing.core.PVector; public class TriangleVectorComparator implements Comparator<PVector> { private PVector M; public TriangleVectorComparator(PVector origin) { M …

3
การสร้าง Plattformer - จะทราบได้อย่างไรว่าผู้เล่นได้รับอนุญาตให้กระโดดได้หรือไม่?
ฉันกำลังสร้างเกม Plattformer Jump n 'Run Style ง่ายๆ ฉันไม่ได้ใช้ไทล์ - ฉันมีรูปทรงเรขาคณิตสำหรับเอนทิตีระดับของฉัน (และผู้เล่นก็เป็นหนึ่งเดียวกัน) ฉันเสร็จรหัสตรวจจับการชนกันของฉันและทุกอย่างทำงานได้ดีจนถึงตอนนี้ ต่อไปฉันอยากจะกระโดด เพียงตรวจสอบว่าผู้เล่นกดคีย์ที่เหมาะสมและเพิ่มความเร็วขึ้น ทำงานได้ดี แต่มันใช้งานได้แม้ว่าผู้เล่นจะอยู่ในอากาศซึ่งไม่ใช่สิ่งที่ฉันต้องการ ;-) ดังนั้นฉันต้องตรวจสอบว่าผู้เล่นยืนอยู่บนบางสิ่งบางอย่าง ความคิดแรกของฉันคือการตรวจสอบว่ามีการชนกันในเฟรมสุดท้ายและทำเครื่องหมายผู้เล่นว่า "สามารถกระโดดได้" แต่สิ่งนี้จะกระตุ้นได้หากผู้เล่นชนกำแพงในอากาศ เนื่องจากทักษะทางคณิตศาสตร์ของฉันไม่ดีฉันจึงขอความช่วยเหลือ - แม้แต่คำใบ้ก็ยังต้องใช้วิธีนี้ ขอบคุณ!

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

1
* การเรียก * = (หรือ * = การโทร *) ช้ากว่าการเขียนฟังก์ชันแยก (สำหรับไลบรารีคณิตศาสตร์) หรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันมีคลาสเวกเตอร์บางส่วนที่ฟังก์ชันทางคณิตศาสตร์มีลักษณะดังนี้: template<typename T, typename U> auto operator*(const Vector3<T>& lhs, const Vector3<U>& rhs) { return Vector3<decltype(lhs.x*rhs.x)>( lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z ); } template<typename T, typename U> Vector3<T>& operator*=(Vector3<T>& lhs, const Vector3<U>& rhs) { lhs.x *= …

6
จะหมุนวัตถุรอบแกนโลกได้อย่างไร?
ฉันมี Vector3 ซึ่งมีมุมออยเลอร์สำหรับแต่ละแกน โดยปกติเมื่อฉันต้องการสร้างเมทริกซ์การหมุนฉันจะใช้ฟังก์ชันเช่น D3DXMatrixRotationX ผ่านมุมที่เกี่ยวข้องจากเวกเตอร์การหมุนของฉันด้านบนและคูณเมทริกซ์ (ZXY) เพื่อสร้างเมทริกซ์การหมุนโดยรวมซึ่งใช้ในการสร้างเมทริกซ์การแปลงวัตถุทั้งหมด อย่างไรก็ตามวิธีนี้จะสร้างชุดการหมุนในพื้นที่วัตถุ นั่นคือการส่งเวกเตอร์ (90, 0, 90) ไปยังวิธีการของฉันจะสร้างการหมุนในอวกาศโลกได้อย่างมีประสิทธิภาพ (90, 90, 0) มีวิธีใดที่จะทำให้แน่ใจว่าแต่ละองค์ประกอบของเวกเตอร์การหมุนของฉันส่งผลให้เกิดการหมุนรอบแกนโลกตามแนวแกนอวกาศที่เกี่ยวข้องหรือไม่? แก้ไข: นี่เป็นอนิเมชั่นของสิ่งที่กำลังเกิดขึ้น - ฉันต้องการวิธีหมุนรอบแกนสีน้ำเงินไม่ใช่สีแดง แก้ไข 2: เพียงเพื่อทราบว่าฉันไม่ได้มองหาวิธีการแก้ปัญหาที่เกี่ยวข้องกับมุมออยเลอร์ แต่เพียงวิธีที่ฉันสามารถเป็นตัวแทนการเปลี่ยนแปลงของการหมุนรอบหลายแกนทั่วโลก

1
อะไรคือคณิตศาสตร์ที่อยู่เบื้องหลังเลเซอร์สีม่วง 'Raiden 2'
เส้นทางของแสงเลเซอร์ได้รับผลกระทบจากอินพุตของผู้ใช้และศัตรูที่ปรากฏบนหน้าจอ นี่คือวิดีโอเวลา 5:00 นาทีเลเซอร์ดังกล่าวจะปรากฏขึ้น: Raiden II (PS) - 1 Loop Clear - Part 2 UPDATE นี่คือการทดสอบโดยใช้ Inkscape เรืออยู่ที่ด้านล่างศัตรู 4 ตัวแรกถูกกำหนดโดยพลาสมา ดูเหมือนว่าจะมีรูปแบบ ฉันขยับเรือก่อนจากนั้นมือจับจากมันจะทำมุม 45 °จากนั้นในขณะที่พยายามให้พอดีกับเส้นโค้งที่ฉันพบว่ามีรูปแบบของด้ามจับแบบขนานและต่อเนื่องจนกระทั่งฉันไปถึงศัตรูคนสุดท้าย Update, 5/26/2012 : ฉันเริ่มต้นโครงการ XNA โดยใช้ beziers ยังมีงานที่ต้องทำอีกจะอัพเดตคำถามในสัปดาห์หน้า คอยติดตาม ! ปรับปรุง: 5/30/2012 : ดูเหมือนว่าพวกเขากำลังใช้Bézier curves ฉันคิดว่าฉันจะสามารถเลียนแบบ / เลียนแบบพลาสมาของเกรดดังกล่าวได้ มีสองหัวข้อใหม่ที่ฉันค้นพบตั้งแต่ครั้งที่แล้ว: ความยาวส่วนโค้ง , ปรากฏการณ์ของ Runge , หัวข้อแรกควรช่วยให้มีการเคลื่อนไหวเชิงเส้นที่เป็นไปได้เหนือเส้นโค้งเบซิเยร์ที่สองควรช่วยในการปรับจำนวนจุดยอด ครั้งต่อไปฉันจะใส่วิดีโอเพื่อให้คุณเห็นความคืบหน้า …

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

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