1. Produkte
  2.   3D
  3.   GO
  4.   MathGL
 
  

Kostenlose Go-Bibliothek für Vektoroperationen & Matrixtransformationen

Open-Source Go 3D-Verarbeitungsbibliothek für Vektoroperationen, die eine breite Palette von Vektor-, Matrix- und Quaternion-Typen und -Operationen bereitstellt, die für 3D-Grafiken und wissenschaftliche Berechnungen unerlässlich sind

Was ist die MathGL-Bibliothek?

Beim Erstellen von Hochleistungs-3D-Grafiken, Physiksimulationen oder Spiel-Engines in Go sind mathematische Präzision und Geschwindigkeit essenziell. MathGL ist eine Open‑Source‑Go‑3D‑API, die ein vollständiges Toolkit für Vektoren, Matrizen und Quaternionen bereitstellt und sich perfekt für 3D‑Matrix‑Transformationen, 3D‑Vektor‑Transformationen und wissenschaftliche Berechnungen eignet. Diese kostenlose Go‑API unterstützt arithmetische Operationen, Vektorverarbeitung (2D, 3D, 4D), die Erstellung von Matrizen (2×2 bis 4×4) und Kameraprojektions‑Hilfsmittel für 3D‑Rendering‑Mathematik. Entwickler können zudem Vektoroperationen über Go ausführen, Matrizen über die Go‑API erstellen und 3D‑Drahtgitter mühelos manipulieren – wodurch MathGL eine leistungsstarke Grundlage für Grafik, Physik und Echtzeit‑Rendering‑Workflows bildet.

Als Teil des go-gl Projekts bietet MathGL eine saubere, gut dokumentierte API, die komplexe Mathematik für Go‑Entwickler vereinfacht. Mit sowohl float32 (mgl32) als auch float64 (mgl64) Versionen balanciert es Leistungs‑ und Präzisionsanforderungen. Die Bibliothek enthält sogar Hilfsfunktionen, um Quaternionen in Rotationsmatrizen zu konvertieren und Easing‑Funktionen für sanfte Animationen. Ihre aktive Wartung und starke Community‑Unterstützung machen sie zur ersten Wahl für alle, die in 3D‑Drahtgitterzeichnung, Spielentwicklung oder Simulationsmodellierung arbeiten. Ob Sie immersive 3D‑Welten bauen oder vektorbasierte Berechnungen optimieren, MathGL liefert das mathematische Rückgrat, um ambitionierte Go‑Projekte in die Realität umzusetzen.

Previous Next

Erste Schritte mit MathGL

Der empfohlene Weg, MathGL zu installieren, ist über GitHub. Bitte verwenden Sie den folgenden Befehl für eine reibungslose Installation.

MathGL API über Get-Befehl installieren

$ go get -u github.com/go-gl/mathgl.git 

Sie können die kompilierte Shared‑Bibliothek aus dem Github-Repository herunterladen.

Vektoroperationen über die Go-Bibliothek

Die Open-Source-MathGL-Bibliothek bietet umfangreiche Unterstützung für Vektor- und Matrixmathematik, einschließlich Operationen für 2D-, 3D- und 4D-Vektoren und -Matrizen. Diese sind essenziell für die Handhabung von Positionen, Richtungen, Geschwindigkeiten und anderen räumlichen Daten. Sie unterstützt Add, Sub, Dot, Cross, Normalize usw. und mehrere Präzisionstypen (mgl32 für float32, mgl64 für float64). Hier ist ein einfaches Beispiel, das zeigt, wie Softwareentwickler verschiedene Vektoroperationen in ihren Go-Anwendungen ausführen können.

Wie führt man Vektoroperationen über die Go-Bibliothek aus?

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]
}

Matrixtransformationen über die Go-Bibliothek

Die Open-Source-MathGL-Bibliothek bietet verschiedene Matrixarten, darunter 2x2-, 3x3- und 4x4-Matrizen. Die Bibliothek enthält Unterstützung für Matrixmultiplikation und Vektorrechnung. Diese sind besonders nützlich für Transformationen im 3D-Raum. Darüber hinaus enthält die Bibliothek umfassende Matrix-Transformationsfunktionen für Translation, Rotation, Skalierung und Projektion. Hier ist ein einfaches Beispiel, das zeigt, wie Softwareentwickler verschiedene Arten von Transformationen in Go-Anwendungen anwenden können.

Wie erstellt man verschiedene Arten von Matrizen und wendet Transformationen darauf über die Go-Bibliothek an?

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)
}

Unterstützung für Quaternion-Operationen

Die MathGL-Bibliothek enthält eine breite Palette primitiver Formen wie Würfel, Kugeln und Kegel, was das Erstellen gängiger 3D-Objekte erleichtert. Zusätzlich können Entwickler benutzerdefinierte Objekte definieren, indem sie Eckpunkte, Kanten und Flächen angeben, was die Erstellung komplexer und einzigartiger Drahtgitter‑Szenen ermöglicht. Ingenieure und Designer können die Bibliothek nutzen, um schnell Prototypen zu erstellen und 3D-Modelle zu visualisieren, was bei der Bewertung von Entwürfen und der Identifizierung potenzieller Probleme hilft, bevor man sich zu einer vollständigen Entwicklung verpflichtet.

Wie konvertiert man Quaternion in Rotationsmatrix über die Go-Bibliothek?

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)
}

Geometrische Hilfsfunktionen & Easing-Funktionen

Die Open‑Source‑MathGL-Bibliothek ist sehr einfach zu verwenden und verfügt über eine sehr klare API sowie vielseitige Funktionalität, die sie zu einem unverzichtbaren Werkzeug im Werkzeugkasten jedes Go‑Entwicklers macht, besonders in 3D‑Umgebungen. Die Bibliothek enthält verschiedene geometrische Hilfsfunktionen für gängige Operationen wie Linien‑Ebenen‑Schnitte, Punkt‑Enthaltungs‑Tests und mehr. Darüber hinaus bietet die Bibliothek verschiedene Easing‑Funktionen, die für Animationen und sanfte Übergänge nützlich sind.

 Deutsch