Categorygithub.com/chazu/protometry
module
0.4.0
Repository: https://github.com/chazu/protometry.git
Documentation: pkg.go.dev

# README

protometry

Codacy Badge PkgGoDev

Geometry on protobuf stubs, could be also implemented in other languages.

Why developing another Math library instead of using existing ones ?

This library uses protobuf types, allow doing math directly on networked data.

Installation

go get github.com/louis030195/protometry

Usage

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
}

Features

Vectors

  • 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

Volumes

  • Box Intersections, Fit, split

Test

make test

Benchmarks

make bench

bench

TODO

  • Z encoding
  • Handle other volumes (sphere, capsule, mesh ...)
  • Improve benchmarks

# Packages

No description provided by the author
No description provided by the author