@@ -50,11 +50,11 @@ func (p Point[T]) XY() (T, T)
5050// Mathematical operations
5151func (p Point[T]) Add(vector Vector[T]) Point[T]
5252func (p Point[T]) AddXY(deltaX, deltaY T) Point[T]
53- func (p Point[T]) Subtract(other Point[T]) Vector[T]
54- func (p Point[T]) Multiply(scale float64) Point[T]
55- func (p Point[T]) MultiplyXY(scaleX, scaleY float64) Point[T]
56- func (p Point[T]) Divide(scale float64) Point[T]
57- func (p Point[T]) DivideXY(scaleX, scaleY float64) Point[T]
53+ func (p Point[T]) Subtract(point Point[T]) Vector[T]
54+ func (p Point[T]) Multiply(factor float64) Point[T]
55+ func (p Point[T]) MultiplyXY(factorX, factorY float64) Point[T]
56+ func (p Point[T]) Divide(factor float64) Point[T]
57+ func (p Point[T]) DivideXY(factorX, factorY float64) Point[T]
5858
5959// Geometric operations
6060func (p Point[T]) DistanceTo(point Point[T]) float64
@@ -81,29 +81,34 @@ func (v Vector[T]) XY() (T, T)
8181// Mathematical operations
8282func (v Vector[T]) Add(vector Vector[T]) Vector[T]
8383func (v Vector[T]) AddXY(deltaX, deltaY T) Vector[T]
84- func (v Vector[T]) Sub (vector Vector[T]) Vector[T]
85- func (v Vector[T]) SubXY (deltaX, deltaY T) Vector[T]
86- func (v Vector[T]) Multiply(scale float64) Vector[T]
87- func (v Vector[T]) MultiplyXY(scaleX, scaleY float64) Vector[T]
88- func (v Vector[T]) Divide(scale float64) Vector[T]
89- func (v Vector[T]) DivideXY(scaleX, scaleY float64) Vector[T]
84+ func (v Vector[T]) Subtract (vector Vector[T]) Vector[T]
85+ func (v Vector[T]) SubtractXY (deltaX, deltaY T) Vector[T]
86+ func (v Vector[T]) Multiply(factor float64) Vector[T]
87+ func (v Vector[T]) MultiplyXY(factorX, factorY float64) Vector[T]
88+ func (v Vector[T]) Divide(factor float64) Vector[T]
89+ func (v Vector[T]) DivideXY(factorX, factorY float64) Vector[T]
9090func (v Vector[T]) Negate() Vector[T]
9191
9292// Vector operations
93- func (v Vector[T]) Dot(vector Vector[T]) float64
94- func (v Vector[T]) Cross(vector Vector[T]) float64
93+ func (v Vector[T]) Dot(vector Vector[T]) T
94+ func (v Vector[T]) Cross(vector Vector[T]) T
9595func (v Vector[T]) Length() float64
9696func (v Vector[T]) LengthSquared() T
97- func (v Vector[T]) Normalize() Vector[T]
9897func (v Vector[T]) Angle() float64
9998
10099// Transformations
101100func (v Vector[T]) Rotate(angle float64) Vector[T]
102101func (v Vector[T]) Normal() Vector[T]
102+ func (v Vector[T]) Resize(length float64) Vector[T]
103+ func (v Vector[T]) Normalize() Vector[T]
104+ func (v Vector[T]) Abs() Vector[T]
103105
104106// Utilities
105- func (v Vector[T]) Equal(vector Vector) bool
107+ func (v Vector[T]) Equal(vector Vector[T] ) bool
106108func (v Vector[T]) Zero() bool
109+ func (v Vector[T]) Unit() bool
110+ func (v Vector[T]) Less(value T) bool
111+ func (v Vector[T]) String() string
107112```
108113
109114### Size
@@ -115,21 +120,22 @@ type Size[T Number] struct {
115120
116121// Properties
117122func (s Size [T ]) XY () (T , T )
118- func (s Size[T]) Area() float64
123+ func (s Size[T]) Area() T
119124func (s Size[T]) Perimeter() T
120125func (s Size[T]) AspectRatio() float64
121126
122-
123127// Dimension operations
124128func (s Size[T]) Scale(factor float64) Size[T]
125129func (s Size[T]) ScaleXY(factorX, factorY float64) Size[T]
126130func (s Size[T]) Grow(amount T) Size[T]
127131func (s Size[T]) GrowXY(amountX, amountY T) Size[T]
128- func (s Size[T]) Shrink(amountX, amountY T) Size[T]
132+ func (s Size[T]) Shrink(amount T) Size[T]
133+ func (s Size[T]) ShrinkXY(amountX, amountY T) Size[T]
129134
130135// Utilities
131136func (s Size[T]) Equal(other Size[T]) bool
132137func (s Size[T]) Zero() bool
138+ func (s Size[T]) String() string
133139```
134140
135141### Circle
@@ -153,14 +159,15 @@ func (c Circle[T]) Scale(factor float64) Circle[T]
153159
154160// Size operations
155161func (c Circle[T]) Resize(radius T) Circle[T]
156- func (c Circle[T]) Expand (amount T) Circle[T]
157- func (c Circle[T]) Shrunk (amount T) Circle[T]
162+ func (c Circle[T]) Grow (amount T) Circle[T]
163+ func (c Circle[T]) Shrink (amount T) Circle[T]
158164
159165// Geometric queries
160166func (c Circle[T]) Contains(point Point[T]) bool
161167
162168// Utilities
163- func (c Circle[T]) Equal(circle Circle) bool
169+ func (c Circle[T]) Equal(circle Circle[T]) bool
170+ func (c Circle[T]) String() string
164171```
165172
166173### Rectangle
@@ -170,6 +177,42 @@ type Rectangle[T Number] struct{
170177 Center Point[T]
171178 Size Size[T]
172179}
180+
181+ // Properties
182+ func (r Rectangle [T ]) Width () T
183+ func (r Rectangle[T]) Height() T
184+ func (r Rectangle[T]) Min() Point[T]
185+ func (r Rectangle[T]) Max() Point[T]
186+ func (r Rectangle[T]) BottomLeft() Point[T]
187+ func (r Rectangle[T]) BottomRight() Point[T]
188+ func (r Rectangle[T]) TopLeft() Point[T]
189+ func (r Rectangle[T]) TopRight() Point[T]
190+ func (r Rectangle[T]) Edges() []Line[T]
191+ func (r Rectangle[T]) Vertices() []Point[T]
192+ func (r Rectangle[T]) Area() T
193+ func (r Rectangle[T]) Perimeter() T
194+ func (r Rectangle[T]) AspectRatio() float64
195+
196+ // Transformations
197+ func (r Rectangle[T]) Translate(vector Vector[T]) Rectangle[T]
198+ func (r Rectangle[T]) MoveTo(center Point[T]) Rectangle[T]
199+ func (r Rectangle[T]) Scale(factor float64) Rectangle[T]
200+ func (r Rectangle[T]) ScaleXY(factorX, factorY float64) Rectangle[T]
201+
202+ // Size operations
203+ func (r Rectangle[T]) Resize(size Size[T]) Rectangle[T]
204+ func (r Rectangle[T]) Grow(amount T) Rectangle[T]
205+ func (r Rectangle[T]) GrowXY(amountX, amountY T) Rectangle[T]
206+ func (r Rectangle[T]) Shrink(amount T) Rectangle[T]
207+ func (r Rectangle[T]) ShrinkXY(amountX, amountY T) Rectangle[T]
208+
209+ // Geometric queries
210+ func (r Rectangle[T]) Contains(point Point[T]) bool
211+
212+ // Utilities
213+ func (r Rectangle[T]) Equal(other Rectangle[T]) bool
214+ func (r Rectangle[T]) ToPolygon() Polygon[T]
215+ func (r Rectangle[T]) String() string
173216```
174217
175218### Line
@@ -179,6 +222,20 @@ type Line[T Number] struct{
179222 Start Point[T]
180223 End Point[T]
181224}
225+
226+ // Transformations
227+ func (l Line [T ]) Translate (vector Vector [T ]) Line [T ]
228+ func (l Line[T]) MoveTo(point Point[T]) Line[T]
229+ func (l Line[T]) Reversed() Line[T]
230+
231+ // Measurements
232+ func (l Line[T]) Midpoint() Point[T]
233+ func (l Line[T]) Direction() Vector[T]
234+ func (l Line[T]) Length() float64
235+
236+ // Utilities
237+ func (l Line[T]) Equal(other Line[T]) bool
238+ func (l Line[T]) String() string
182239```
183240
184241### Polygon
@@ -187,6 +244,15 @@ type Line[T Number] struct{
187244type Polygon[T Number] struct{
188245 Vertices []Point[T]
189246}
247+
248+ // Properties
249+ func (p Polygon [T ]) Center () Point [T ]
250+
251+ // Transformations
252+ func (p Polygon[T]) Translate(vector Vector[T]) Polygon[T]
253+ func (p Polygon[T]) MoveTo(center Point[T]) Polygon[T]
254+ func (p Polygon[T]) Scale(factor float64) Polygon[T]
255+ func (p Polygon[T]) ScaleXY(factorX, factorY float64) Polygon[T]
190256```
191257
192258### Regular Polygon
@@ -197,6 +263,18 @@ type RegularPolygon[T Number] struct {
197263 Size Size[T]
198264 N int
199265}
266+
267+ // Properties
268+ func (rp RegularPolygon [T ]) Vertices () []Point [T ]
269+
270+ // Transformations
271+ func (rp RegularPolygon[T]) Translate(vector Vector[T]) RegularPolygon[T]
272+ func (rp RegularPolygon[T]) MoveTo(center Point[T]) RegularPolygon[T]
273+ func (rp RegularPolygon[T]) Scale(factor float64) RegularPolygon[T]
274+ func (rp RegularPolygon[T]) ScaleXY(factorX, factorY float64) RegularPolygon[T]
275+
276+ // Utilities
277+ func (rp RegularPolygon[T]) ToPolygon() Polygon[T]
200278```
201279
202280### Constructor Functions
0 commit comments