مكتبة Go مجانية لعمليات المتجهات وتحويلات المصفوفات
مكتبة معالجة Go ثلاثية الأبعاد مفتوحة المصدر لعمليات المتجهات التي توفر مجموعة واسعة من أنواع المتجهات والمصفوفات والكوارتنions والعمليات الضرورية للرسومات ثلاثية الأبعاد والحسابات العلمية
ما هي مكتبة MathGL؟
عند إنشاء رسومات ثلاثية الأبعاد عالية الأداء أو محاكاة فيزياء أو محركات ألعاب باستخدام Go، تكون الدقة الرياضية والسرعة أمرًا أساسيًا. MathGL هو واجهة برمجة تطبيقات ثلاثية الأبعاد مفتوحة المصدر للغة Go توفر مجموعة أدوات كاملة للمتجهات والمصفوفات والكواترنيونات، مما يجعلها مثالية لتحويلات المصفوفات ثلاثية الأبعاد، وتحويلات المتجهات ثلاثية الأبعاد، والحسابات العلمية. تدعم هذه الواجهة المجانية للـ Go عمليات حسابية، ومعالجة المتجهات (2D، 3D، 4D)، وإنشاء المصفوفات (من 2x2 إلى 4x4)، وأدوات إسقاط الكاميرا للرياضيات الخاصة بتصيير ثلاثي الأبعاد. يمكن للمطورين أيضًا إجراء عمليات المتجهات عبر Go، وإنشاء المصفوفات عبر واجهة برمجة التطبيقات الخاصة بـ Go، والتلاعب بإطارات السلك ثلاثية الأبعاد بسهولة—مما يجعل MathGL أساسًا قويًا للرسومات، والفيزياء، وتدفقات عمل التصيير في الوقت الحقيقي.
كجزء من مشروع go-gl، يقدم MathGL واجهة برمجة تطبيقات نظيفة وموثقة جيدًا تُبسّط الرياضيات المعقدة لمطوري Go. مع إصداري float32 (mgl32) وfloat64 (mgl64)، يوازن بين الأداء ومتطلبات الدقة. تتضمن المكتبة أيضًا أدوات لتحويل الكواترنيون إلى مصفوفة دوران ووظائف تسهيل للرسوم المتحركة السلسة. صيانتها النشطة ودعم المجتمع القوي يجعلانها خيارًا مفضلاً لأي شخص يعمل في رسم الأسلاك ثلاثية الأبعاد، أو تطوير الألعاب، أو نمذجة المحاكاة. سواء كنت تبني عوالم ثلاثية الأبعاد غامرة أو تُحسّن الحسابات القائمة على المتجهات، يزوّدك MathGL بالعمود الفقري الرياضي لتحويل مشاريع Go الطموحة إلى واقع.
البدء مع MathGL
الطريقة الموصى بها لتثبيت MathGL هي باستخدام GitHub. يرجى استخدام الأمر التالي لتثبيت سلس.
تثبيت MathGL API عبر أمر Get
$ go get -u github.com/go-gl/mathgl.git يمكنك تنزيل المكتبة المشتركة المجمعة من مستودع Github.
عمليات المتجهات عبر مكتبة Go
توفر مكتبة MathGL المفتوحة المصدر دعماً واسعاً للرياضيات المتجهية والمصفوفية، بما في ذلك العمليات للمتجهات والمصفوفات ثنائية الأبعاد وثلاثية الأبعاد ورباعية الأبعاد. هذه ضرورية للتعامل مع المواقع والاتجاهات والسرعات وغيرها من البيانات المكانية. توفر الدعم للعمليات مثل الجمع (Add)، الطرح (Sub)، الضرب النقطي (Dot)، الضرب المتقاطع (Cross)، التطبيع (Normalize)، وغيرها، بالإضافة إلى أنواع الدقة المتعددة (mgl32 للـ float32، mgl64 للـ float64). إليكم مثالًا بسيطًا يوضح كيف يمكن للمطورين تنفيذ عمليات متجهية مختلفة داخل تطبيقات Go الخاصة بهم.
كيف تقوم بعمليات المتجهات عبر مكتبة Go؟
package main
import (
"fmt"
"github.com/go-gl/mathgl/mgl32"
)
func main() {
// Create two 3D vectors
v1 := mgl32.Vec3{1, 2, 3}
v2 := mgl32.Vec3{4, 5, 6}
// Vector addition
sum := v1.Add(v2)
fmt.Println("Vector sum:", sum) // [5 7 9]
// Dot product
dot := v1.Dot(v2)
fmt.Println("Dot product:", dot) // 32
// Cross product
cross := v1.Cross(v2)
fmt.Println("Cross product:", cross) // [-3 6 -3]
}
تحويلات المصفوفات عبر مكتبة Go
توفر مكتبة MathGL المفتوحة المصدر أنواعًا مختلفة من المصفوفات بما في ذلك مصفوفات 2x2 و3x3 و4x4. تشمل المكتبة دعمًا لضرب المصفوفات وتحويل المتجهات. هذه مفيدة بشكل خاص للتحويلات في الفضاء ثلاثي الأبعاد. علاوةً على ذلك، تتضمن المكتبة وظائف تحويل مصفوفية شاملة للترجمة (translation)، الدوران (rotation)، التحجيم (scaling)، والإسقاط (projection). إليكم مثالًا بسيطًا يوضح كيف يمكن للمطورين تطبيق أنواع مختلفة من التحويل داخل تطبيقات Go.
كيف تنشئ أنواعًا مختلفة من المصفوفات وتطبق التحويل عليها عبر مكتبة Go؟
package main
import (
"fmt"
"github.com/go-gl/mathgl/mgl32"
"math"
)
func main() {
// Create an identity matrix
identity := mgl32.Ident4()
fmt.Println("Identity matrix:\n", identity)
// Create a translation matrix
translation := mgl32.Translate3D(2, 3, 4)
fmt.Println("Translation matrix:\n", translation)
// Create a rotation matrix (45 degrees around Y axis)
rotation := mgl32.HomogRotate3DY(mgl32.DegToRad(45))
fmt.Println("Rotation matrix:\n", rotation)
// Create a scaling matrix
scale := mgl32.Scale3D(2, 2, 2)
fmt.Println("Scaling matrix:\n", scale)
// Combine transformations
transform := translation.Mul4(rotation).Mul4(scale)
fmt.Println("Combined transformation:\n", transform)
}
دعم عمليات الكواترنيون
تتضمن مكتبة MathGL مجموعة واسعة من الأشكال الأولية مثل المكعبات والكرات والاقماع، مما يجعل من السهل إنشاء كائنات ثلاثية الأبعاد شائعة. بالإضافة إلى ذلك، يمكن للمطورين تعريف كائنات مخصصة عن طريق تحديد الرؤوس والحواف والوجوه، مما يسمح بإنشاء مشاهد سلكية معقدة وفريدة. يمكن للمهندسين والمصممين استخدام المكتبة لإنشاء نماذج أولية بسرعة وتصوير نماذج ثلاثية الأبعاد، مما يساعد في تقييم التصاميم وتحديد المشكلات المحتملة قبل الالتزام بالتطوير على نطاق كامل.
كيف تحول الكواترنيون إلى مصفوفة دوران عبر مكتبة Go؟
package main
import (
"fmt"
"github.com/go-gl/mathgl/mgl32"
)
func main() {
// Create a quaternion representing 90 degree rotation around X axis
q := mgl32.QuatRotate(mgl32.DegToRad(90), mgl32.Vec3{1, 0, 0})
// Convert quaternion to rotation matrix
rotMat := q.Mat4()
fmt.Println("Rotation matrix from quaternion:\n", rotMat)
// Spherical linear interpolation between two quaternions
q1 := mgl32.QuatRotate(mgl32.DegToRad(0), mgl32.Vec3{0, 1, 0})
q2 := mgl32.QuatRotate(mgl32.DegToRad(90), mgl32.Vec3{0, 1, 0})
interpolated := mgl32.QuatSlerp(q1, q2, 0.5) // Halfway between
fmt.Println("Interpolated quaternion:", interpolated)
}
أدوات هندسية ودوال التسهيل
مكتبة MathGL المفتوحة المصدر سهلة الاستخدام للغاية وتضم واجهة برمجة تطبيقات واضحة جدًا ووظائف متعددة تجعلها أداة أساسية في مجموعة أدوات أي مطور Go، خاصة في بيئات ثلاثية الأبعاد. تشمل المكتبة أدوات هندسية مختلفة للعمليات الشائعة مثل تقاطعات الخط مع المستوى، اختبارات احتواء النقاط، والمزيد. علاوة على ذلك، تتضمن المكتبة أيضًا وظائف تسهيل متنوعة مفيدة للرسوم المتحركة والانتقالات السلسة.