Geometry on protobuf stubs, could be also implemented in other languages.
This library uses protobuf types, allow doing math directly on networked data.
go get github.com/louis030195/protometry
package main
import (
"github.com/louis030195/protometry/api/vector3"
"github.com/louis030195/protometry/api/volume"
"log"
)
func main() {
vector := vector3.NewVector3One() // 1,1,1
log.Printf("My vector: %f", vector.X) // 1
vector.X = 12.6422
v := vector3.NewVector3(0, 0, 0)
v.Scale(3.5) // 0,0,0
v2 := v.Plus(*v) // 0,0,0
log.Printf("My vector: %v", v2) // 0,0,0
a := volume.NewBoxMinMax(0, 0, 0, 1, 1, 1)
b := volume.NewBoxOfSize(2, 2, 2, 0.5)
a.Fit(*b) // False
}
- Build vectors of N dimensions
- Vector comparison (min, max, equal)
- Normalization
- Absolute value
- Plus, Minus, Scale, Dot(vector product), Div(scalar division), Cross product, Euclidean Norm, Angle, Lerp
- Box Intersections, Fit, split
make test
make bench
- Z encoding
- Handle other volumes (sphere, capsule, mesh ...)
- Improve benchmarks