11package geom
22
3- import "github.com/gravitton/geometry/internal"
3+ import (
4+ "github.com/gravitton/x/slices"
5+ )
46
57// Polygon is a 2D polygon with 3+ vertices.
68type Polygon [T Number ] struct {
@@ -25,7 +27,7 @@ func (p Polygon[T]) Center() Point[T] {
2527
2628// Translate creates a new Polygon translated by the given vector (applied to all vertices).
2729func (p Polygon [T ]) Translate (vector Vector [T ]) Polygon [T ] {
28- return Polygon [T ]{internal .Map (p .Vertices , func (e Point [T ]) Point [T ] {
30+ return Polygon [T ]{slices .Map (p .Vertices , func (e Point [T ]) Point [T ] {
2931 return e .Add (vector )
3032 })}
3133}
@@ -38,15 +40,15 @@ func (p Polygon[T]) MoveTo(point Point[T]) Polygon[T] {
3840// Scale creates a new Polygon uniformly scaled about its centroid by the factor.
3941func (p Polygon [T ]) Scale (factor float64 ) Polygon [T ] {
4042 center := p .Center ()
41- return Polygon [T ]{internal .Map (p .Vertices , func (point Point [T ]) Point [T ] {
43+ return Polygon [T ]{slices .Map (p .Vertices , func (point Point [T ]) Point [T ] {
4244 return center .Add (point .Subtract (center ).Multiply (factor ))
4345 })}
4446}
4547
4648// ScaleXY creates a new Polygon scaled about its centroid by the factors.
4749func (p Polygon [T ]) ScaleXY (factorX , factorY float64 ) Polygon [T ] {
4850 center := p .Center ()
49- return Polygon [T ]{internal .Map (p .Vertices , func (point Point [T ]) Point [T ] {
51+ return Polygon [T ]{slices .Map (p .Vertices , func (point Point [T ]) Point [T ] {
5052 return center .Add (point .Subtract (center ).MultiplyXY (factorX , factorY ))
5153 })}
5254}
0 commit comments