32 lines
1.0 KiB
Go
32 lines
1.0 KiB
Go
|
package geom
|
||
|
|
||
|
import (
|
||
|
"math"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestPointFAngleTo(t *testing.T) {
|
||
|
for a := .0; a <= 2*math.Pi; a += math.Pi * 0.25 {
|
||
|
assert.InDelta(t, a, PtF(0, 0).AngleTo(PtF(100*math.Cos(a), 100*math.Sin(a))), 0.000001)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestPointInPolygon(t *testing.T) {
|
||
|
pol := PolygonF{[]PointF{PtF(0, 0), PtF(0, 3), PtF(1, 3), PtF(2, 1), PtF(3, 3), PtF(5, 3), PtF(5, 2), PtF(3, 1), PtF(5, 0)}}
|
||
|
assert.True(t, PtF(1, 2).InPolygon(pol))
|
||
|
assert.True(t, PtF(3, 2).InPolygon(pol))
|
||
|
assert.True(t, PtF(4, 2).InPolygon(pol))
|
||
|
// assert.True(t, PtF(0, 0).InPolygon(pol)) // Corner = out
|
||
|
// assert.True(t, PtF(0, 3).InPolygon(pol)) // Corner = out
|
||
|
// assert.True(t, PtF(5, 3).InPolygon(pol)) // Corner = in
|
||
|
// assert.True(t, PtF(5, 0).InPolygon(pol)) // Corner = out
|
||
|
assert.False(t, PtF(0, -1).InPolygon(pol))
|
||
|
assert.False(t, PtF(-1, 0).InPolygon(pol))
|
||
|
assert.False(t, PtF(2, 2).InPolygon(pol))
|
||
|
assert.False(t, PtF(2, 3).InPolygon(pol))
|
||
|
assert.False(t, PtF(4, 1).InPolygon(pol))
|
||
|
assert.False(t, PtF(5, 1).InPolygon(pol))
|
||
|
}
|