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 เพื่อแสดงตำแหน่ง / …