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

Darmowa biblioteka Go do operacji wektorowych i transformacji macierzy

Otwarta biblioteka Go 3D do przetwarzania operacji wektorowych, oferująca szeroki zakres typów i operacji wektorów, macierzy oraz kwaternionów niezbędnych do grafiki 3D i obliczeń naukowych

Czym jest biblioteka MathGL?

Podczas tworzenia wysokowydajnej grafiki 3D, symulacji fizycznych lub silników gier w Go, precyzja matematyczna i szybkość są niezbędne. MathGL to otwarto‑źródłowe API 3D dla Go, które dostarcza kompletny zestaw narzędzi do wektorów, macierzy i kwaternionów, co czyni je idealnym do transformacji macierzy 3D, transformacji wektorów 3D oraz obliczeń naukowych. To darmowe API Go obsługuje operacje arytmetyczne, obsługę wektorów (2D, 3D, 4D), tworzenie macierzy (od 2x2 do 4x4) oraz narzędzia projekcji kamery dla matematyki renderowania 3D. Programiści mogą także wykonywać operacje wektorowe w Go, tworzyć macierze za pomocą API Go i łatwo manipulować szkieletami 3D — co sprawia, że MathGL jest potężną podstawą dla grafiki, fizyki i przepływów pracy renderowania w czasie rzeczywistym.

Część projektu go-gl, MathGL oferuje czyste, dobrze udokumentowane API, które upraszcza skomplikowaną matematykę dla programistów Go. Dostępne zarówno w wersjach float32 (mgl32) jak i float64 (mgl64), zapewnia równowagę między wydajnością a precyzją. Biblioteka zawiera także narzędzia do konwersji kwaternionu na macierz obrotu oraz funkcje easing dla płynnych animacji. Aktywne utrzymanie i silne wsparcie społeczności czynią ją wyborem numer jeden dla każdego pracującego nad rysowaniem szkieletów 3D, tworzeniem gier lub modelowaniem symulacji. Niezależnie od tego, czy budujesz immersyjne światy 3D, czy optymalizujesz obliczenia wektorowe, MathGL wyposaża Cię w matematyczną podstawę, aby przekształcić ambitne projekty Go w rzeczywistość.

Previous Next

Rozpoczęcie pracy z MathGL

Zalecany sposób instalacji MathGL to użycie GitHub. Proszę użyć poniższego polecenia, aby przeprowadzić płynną instalację.

Zainstaluj API MathGL za pomocą polecenia Get

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

Możesz pobrać skompilowaną bibliotekę współdzieloną z repozytorium Github.

Operacje wektorowe za pomocą biblioteki Go

Biblioteka open source MathGL zapewnia rozbudowane wsparcie dla matematyki wektorów i macierzy, w tym operacji na wektorach i macierzach 2D, 3D i 4D. Są one niezbędne do obsługi pozycji, kierunków, prędkości oraz innych danych przestrzennych. Biblioteka oferuje wsparcie dla operacji Add, Sub, Dot, Cross, Normalize itp. oraz typów o różnych precyzjach (mgl32 dla float32, mgl64 dla float64). Oto prosty przykład, który pokazuje, jak programiści mogą wykonywać różne operacje wektorowe w swoich aplikacjach Go.

Jak wykonać operacje wektorowe za pomocą biblioteki 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]
}

Transformacje macierzy za pomocą biblioteki Go

Biblioteka open source MathGL udostępnia różne typy macierzy, w tym macierze 2x2, 3x3 i 4x4. Biblioteka zawiera wsparcie dla mnożenia macierzy i transformacji wektorów. Są one szczególnie przydatne do przekształceń w przestrzeni 3D. Ponadto biblioteka zawiera kompleksowe funkcje transformacji macierzy, takie jak translacja, rotacja, skalowanie i projekcja. Oto prosty przykład, który pokazuje, jak programiści mogą stosować różne rodzaje przekształceń w aplikacjach Go.

Jak tworzyć różne typy macierzy & zastosować do nich transformację za pomocą biblioteki 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)
}

Obsługa operacji kwaternionów

Biblioteka MathGL zawiera szeroką gamę podstawowych kształtów, takich jak sześciany, kule i stożki, co ułatwia tworzenie typowych obiektów 3D. Dodatkowo programiści mogą definiować własne obiekty, określając wierzchołki, krawędzie i powierzchnie, co pozwala na tworzenie złożonych i unikalnych scen szkieletowych. Inżynierowie i projektanci mogą korzystać z biblioteki, aby szybko prototypować i wizualizować modele 3D, co pomaga w ocenie projektów i identyfikacji potencjalnych problemów przed przystąpieniem do pełnoskalowego rozwoju.

Jak przekonwertować kwaternion na macierz rotacji za pomocą biblioteki 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)
}

Narzędzia geometryczne i funkcje wygładzania

Biblioteka open source MathGL jest bardzo łatwa w użyciu, a jej przejrzyste API i wszechstronna funkcjonalność czynią ją niezbędnym narzędziem w zestawie każdego programisty Go, szczególnie w środowiskach 3D. Biblioteka zawiera różne narzędzia geometryczne do typowych operacji, takich jak przecięcia linii z płaszczyzną, testy zawierania punktów i inne. Co więcej, biblioteka zawiera także różne funkcje easingowe przydatne w animacjach i płynnych przejściach.

 Polski