นี่คือไลบรารีคณิตศาสตร์ Go matrix และเวกเตอร์ที่เชี่ยวชาญด้านความสามารถด้านกราฟิก Open GL
แพ็คเกจนี้สร้างขึ้นโดยมีการสร้างโค้ดสำหรับการดำเนินการเวกเตอร์และเมทริกซ์ขั้นพื้นฐานเป็นหลัก และฟังก์ชันการทำงานนอกเหนือจากนั้นเขียนด้วยลายมือ
เวกเตอร์และเมทริกซ์จะถูกจัดเก็บไว้ใน Column Major Order เช่นเดียวกับ OpenGL ซึ่งหมายความว่าอาร์กิวเมนต์ "transpose" ควรเป็น เท็จ เมื่อส่งผ่านเวกเตอร์และเมทริกซ์โดยใช้แพ็คเกจนี้
แพ็คเกจนี้แบ่งออกเป็นสองแพ็คเกจย่อย แพ็คเกจ mgl32
เกี่ยวข้องกับโฟลต 32 บิต และ mgl64
เกี่ยวข้องกับโฟลต 64 บิต โดยทั่วไปคุณจะใช้แบบ 32 บิตกับ OpenGL แต่แบบ 64 บิตจะพร้อมใช้งานในกรณีที่คุณใช้ส่วนขยายสองเท่าหรือเพียงต้องการทำคณิตศาสตร์ 3 มิติที่มีความแม่นยำสูงกว่าโดยไม่ต้องใช้ OpenGL
พื้นที่เก็บข้อมูลเก่าก่อนที่จะแยกระหว่างแพ็คเกจย่อย 32 บิตและ 64 บิตจะถูกเก็บไว้ที่ github.com/Jragonmiris/mathgl (เส้นทางพื้นที่เก็บข้อมูลเก่า) แต่ไม่ได้รับการบำรุงรักษาอีกต่อไป
ตัวอย่างสามารถพบได้ใน github.com/go-gl/example
คุณอาจใช้ go get
และ Go เวอร์ชันเก่าผสมกัน ยูทิลิตี้ go get
ได้รับการตั้งโปรแกรมให้ค้นหาแท็กที่ตรงกับเวอร์ชัน Go ปัจจุบัน ขณะนี้มีแท็กสำหรับ Go1.2.2 ดังนั้นหากคุณยังไม่ได้อัปเกรดเป็น Go1.3 go get
จะได้รับ API ที่เก่ากว่า ดูส่วนการเปลี่ยนแปลง API สำหรับรายละเอียดเกี่ยวกับการติดแท็กเวอร์ชัน
อย่าลังเลที่จะส่งคำขอดึงคุณสมบัติและการแก้ไขข้อบกพร่อง โปรดทราบว่า นอกเหนือจากข้อบกพร่องด้านเอกสาร การแก้ไขเมตา (travis.yml ฯลฯ) โค้ดตัวอย่าง และการเปลี่ยนแปลงเล็กๆ น้อยๆ อย่างยิ่ง (ตัวเข้าถึงพื้นฐาน) จะไม่ได้รับการยอมรับ หากไม่มีการทดสอบที่สอดคล้องกับโค้ดใหม่ หากเป็นการแก้ไขข้อบกพร่อง การทดสอบควรทดสอบข้อบกพร่อง
mgl64
สร้างขึ้นโดยตรงจากเวอร์ชัน 32 บิต เพื่อให้สอดคล้องกับการเปลี่ยนแปลงของคุณ go generate github.com/go-gl/mathgl/mgl32
(หรือเพียง go generate
ในไดเรกทอรี mgl32
) โปรดทราบว่าเนื่องจากมีการใช้การสร้างโค้ดใน matrix.go
และ vector.go
จึงไม่ควรทำการเปลี่ยนแปลงกับไฟล์เหล่านั้นโดยตรง แก้ไข matrix.tmpl
หรือ vector.tmpl
แล้วรัน go create
จากนี้ไป จะไม่มีการเปลี่ยนแปลงสำคัญๆ ที่ทำให้ API เสียหายระหว่างการเปิดตัวเวอร์ชัน Go นั่นหมายถึงทุกครั้งที่ "x" ใน Go1.xx เพิ่มขึ้น แน่นอนว่ามีข้อยกเว้นสำหรับการแก้ไขข้อบกพร่อง หากการแก้ไขข้อบกพร่องจำเป็นต้องเปลี่ยนความหมายของการเรียกซอฟต์แวร์ ก็จะมีการเปลี่ยนแปลง (ตัวอย่างคือการอัปเดตล่าสุดของ Transpose ซึ่งใช้กฎหลักของแถวโดยไม่ตั้งใจ) ฟังก์ชันที่เลิกใช้แล้วอาจถูกโจมตีในเวอร์ชันหลักที่เผยแพร่ ก่อนที่การเปลี่ยนแปลงที่ขัดข้องของ API ใกล้การเปิดตัวรุ่นหลัก การคอมมิตที่ไม่ทำลายล่าสุดจะถูกแท็กด้วยหมายเลขเวอร์ชัน Go ก่อนหน้า (เช่น Go1.2.2) หากไม่มีแท็กดังกล่าว ก็ถือว่าไม่มีอะไรเสียหาย
การกำจัด EulerToQuat; ใช้ AnglesToQuat กับคำสั่ง ZYX แทน