mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-17 01:32:26 +08:00
三维形状碰撞检测
This commit is contained in:
41
pkg/alg/shape_test.go
Normal file
41
pkg/alg/shape_test.go
Normal file
@@ -0,0 +1,41 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user