package point_test import ( "math" "testing" "git.wtrh.nl/patterns/gopatterns/pkg/point" "git.wtrh.nl/patterns/gopatterns/pkg/position" "git.wtrh.nl/patterns/gopatterns/pkg/position/testutil" "git.wtrh.nl/patterns/gopatterns/pkg/vector" "github.com/tdewolff/canvas" ) func TestBetweenPoint_Position(t *testing.T) { p1 := point.NewAbsolutePoint(0, 0, 0, "1") p2 := point.NewAbsolutePoint(1, 1, 0, "2") p3 := point.NewBetweenPoint(p1, p2, 0.5, "3") testutil.EqualPosition(t, position.Position{ Vector: vector.Vector{ X: 0.5, Y: 0.5, }, Rotation: -math.Pi / 4, }, p3.Position(), 1e-10) matrix := p3.Matrix() EqualMatrix(t, canvas.Matrix{ {math.Cos(-math.Pi / 4), -math.Sin(-math.Pi / 4), 0.5}, {math.Sin(-math.Pi / 4), math.Cos(-math.Pi / 4), 0.5}, }, matrix, 1e-10) p4 := point.NewAbsolutePoint(0, 1, 0, "4") p5 := point.NewBetweenPoint(p3, p4, 0.5, "5") testutil.EqualPosition(t, position.Position{ Vector: vector.Vector{ X: 0.25, Y: 0.75, }, Rotation: math.Pi / 4, }, p5.Position(), 1e-10) matrix2 := p5.Matrix() EqualMatrix(t, canvas.Matrix{ {math.Cos(math.Pi / 4), -math.Sin(math.Pi / 4), 0.25}, {math.Sin(math.Pi / 4), math.Cos(math.Pi / 4), 0.75}, }, matrix2, 1e-10) }