Files
hk4e/pkg/alg/shape_test.go
2023-02-22 21:52:25 +08:00

42 lines
1.2 KiB
Go

package alg
import (
"log"
"testing"
"time"
)
func TestShape(t *testing.T) {
shape := NewShape()
shape.NewCubic(&Vector3{X: 5.0, Y: 0.0, Z: 5.0}, &Vector3{X: 5.0, Y: 10.0, Z: 5.0})
shape.NewSphere(&Vector3{X: -10.0, Y: -10.0, Z: -10.0}, 10.0)
shape.NewCylinder(&Vector3{X: 0.0, Y: 0.0, Z: 0.0}, 3.0, 5.0)
shape.NewPolygon(&Vector3{X: 0.0, Y: 0.0, Z: 0.0}, []*Vector2{
{X: 10.0, Z: 10.0},
{X: 20.0, Z: 0.0},
{X: 10.0, Z: -10.0},
{X: -10.0, Z: -10.0},
{X: -20.0, Z: 0.0},
{X: -10.0, Z: 10.0},
}, 10.0)
contain := shape.Contain(&Vector3{X: 5.0, Y: 0.0, Z: 5.0})
log.Printf("contain: %v\n", contain)
startTime := time.Now().UnixNano()
for i := 0; i < 1000*1000*10; i++ {
shape.Contain(&Vector3{X: 999.9, Y: 888.8, Z: 777.7})
}
endTime := time.Now().UnixNano()
log.Printf("avg cost time: %v ns\n", (endTime-startTime)/(1000*1000*10))
shape.Clear()
shape.NewPolygon(&Vector3{X: 0.0, Y: 0.0, Z: 0.0}, []*Vector2{
{X: 1.0, Z: 1.0},
{X: 2.0, Z: 0.0},
{X: 1.0, Z: -1.0},
{X: -1.0, Z: -1.0},
{X: -2.0, Z: 0.0},
{X: -1.0, Z: 1.0},
}, 10.0)
polygonContain := shape.Contain(&Vector3{X: 0.1, Y: 0.0, Z: 0.1})
log.Printf("polygon contain: %v\n", polygonContain)
}