Versions in this module Expand all Collapse all v0 v0.7.0 Jan 23, 2024 Changes in this version + var WorldDown = WorldUp.Invert() + var WorldLeft = WorldRight.Invert() + var WorldRight = NewVector(1, 0) + var WorldUp = NewVector(0, 1) type Circle + func (c *Circle) IntersectionForEach(dx, dy float64, f func(c *ContactSet) bool, others ...IShape) + func (circle *Circle) SetScaleVec(scale Vector) type ConvexPolygon + func NewConvexPolygonVec(position Vector, points ...Vector) *ConvexPolygon + func (p *ConvexPolygon) IntersectionForEach(dx, dy float64, f func(c *ContactSet) bool, others ...IShape) + func (polygon *ConvexPolygon) SetScaleVec(vec Vector) type IShape + IntersectionForEach func(dx, dy float64, f func(c *ContactSet) bool, others ...IShape) + SetPositionVec func(position Vector) + SetScaleVec func(vec Vector) + type ModVector struct + func (ip ModVector) Add(other Vector) ModVector + func (ip ModVector) ClampAngle(baselineVector Vector, maxAngle float64) ModVector + func (ip ModVector) ClampMagnitude(maxMag float64) ModVector + func (ip ModVector) Clone() ModVector + func (ip ModVector) Divide(scalar float64) ModVector + func (ip ModVector) Expand(margin, min float64) ModVector + func (ip ModVector) Invert() ModVector + func (ip ModVector) Lerp(other Vector, percentage float64) ModVector + func (ip ModVector) Mult(other Vector) ModVector + func (ip ModVector) Rotate(angle float64) ModVector + func (ip ModVector) Round(snapToUnits float64) ModVector + func (ip ModVector) Scale(scalar float64) ModVector + func (ip ModVector) SetZero() ModVector + func (ip ModVector) Slerp(targetDirection Vector, percentage float64) ModVector + func (ip ModVector) String() string + func (ip ModVector) Sub(other Vector) ModVector + func (ip ModVector) SubMagnitude(mag float64) ModVector + func (ip ModVector) ToVector() Vector + func (ip ModVector) Unit() ModVector type Object + Position Vector + Size Vector type Space + func (sp *Space) CheckWorld(x, y, w, h float64, tags ...string) []*Object + func (sp *Space) CheckWorldVec(pos, size Vector, tags ...string) []*Object + func (sp *Space) SpaceToWorldVec(x, y int) Vector + func (sp *Space) WorldToSpaceVec(position Vector) (int, int) + type Vector struct + X float64 + Y float64 + func NewVector(x, y float64) Vector + func NewVectorZero() Vector + func (vec *Vector) Modify() ModVector + func (vec Vector) Add(other Vector) Vector + func (vec Vector) Angle(other Vector) float64 + func (vec Vector) AngleRotation() float64 + func (vec Vector) ClampAngle(baselineVec Vector, maxAngle float64) Vector + func (vec Vector) ClampMagnitude(maxMag float64) Vector + func (vec Vector) Distance(other Vector) float64 + func (vec Vector) DistanceSquared(other Vector) float64 + func (vec Vector) Divide(scalar float64) Vector + func (vec Vector) Dot(other Vector) float64 + func (vec Vector) Equals(other Vector) bool + func (vec Vector) Expand(margin, min float64) Vector + func (vec Vector) Floats() [2]float64 + func (vec Vector) Invert() Vector + func (vec Vector) IsZero() bool + func (vec Vector) Lerp(other Vector, percentage float64) Vector + func (vec Vector) Magnitude() float64 + func (vec Vector) MagnitudeSquared() float64 + func (vec Vector) Mult(other Vector) Vector + func (vec Vector) Rotate(angle float64) Vector + func (vec Vector) Round(snapToUnits float64) Vector + func (vec Vector) Scale(scalar float64) Vector + func (vec Vector) Set(x, y float64) Vector + func (vec Vector) SetX(x float64) Vector + func (vec Vector) SetY(y float64) Vector + func (vec Vector) Slerp(targetDirection Vector, percentage float64) Vector + func (vec Vector) String() string + func (vec Vector) Sub(other Vector) Vector + func (vec Vector) SubMagnitude(mag float64) Vector + func (vec Vector) Unit() Vector v0.6.1 May 31, 2023 Changes in this version type ConvexPolygon + func (cp *ConvexPolygon) RecenterPoints() v0.6.0 Nov 8, 2022 Changes in this version + func ToDegrees(radians float64) float64 + func ToRadians(degrees float64) float64 type Circle + func (circle *Circle) Rotate(radians float64) + func (circle *Circle) Rotation() float64 + func (circle *Circle) Scale() (float64, float64) + func (circle *Circle) SetRadius(radius float64) + func (circle *Circle) SetRotation(rotation float64) + func (circle *Circle) SetScale(w, h float64) type ConvexPolygon + ScaleH float64 + ScaleW float64 + func (polygon *ConvexPolygon) Rotate(radians float64) + func (polygon *ConvexPolygon) Rotation() float64 + func (polygon *ConvexPolygon) Scale() (float64, float64) + func (polygon *ConvexPolygon) SetRotation(radians float64) + func (polygon *ConvexPolygon) SetScale(w, h float64) + type IShape interface + Bounds func() (vector.Vector, vector.Vector) + Clone func() IShape + Intersection func(dx, dy float64, other IShape) *ContactSet + Move func(x, y float64) + MoveVec func(vec vector.Vector) + Position func() (float64, float64) + Rotate func(radians float64) + Rotation func() float64 + Scale func() (float64, float64) + SetPosition func(x, y float64) + SetRotation func(radians float64) + SetScale func(w, h float64) type Space + func (sp *Space) CheckCellsWorld(x, y, w, h float64, tags ...string) *Object v0.5.1 Sep 17, 2021 Changes in this version type Object + func (obj *Object) SetShape(shape Shape) v0.5.0 Sep 7, 2021 Changes in this version + type Cell struct + Objects []*Object + X int + Y int + func (cell *Cell) Contains(obj *Object) bool + func (cell *Cell) ContainsTags(tags ...string) bool + func (cell *Cell) Occupied() bool + type Circle struct + Radius float64 + X float64 + Y float64 + func NewCircle(x, y, radius float64) *Circle + func (circle *Circle) Bounds() (vector.Vector, vector.Vector) + func (circle *Circle) Clone() Shape + func (circle *Circle) Intersection(dx, dy float64, other Shape) *ContactSet + func (circle *Circle) IntersectionPointsCircle(other *Circle) []vector.Vector + func (circle *Circle) Move(x, y float64) + func (circle *Circle) MoveVec(vec vector.Vector) + func (circle *Circle) PointInside(point vector.Vector) bool + func (circle *Circle) Position() (float64, float64) + func (circle *Circle) SetPosition(x, y float64) + func (circle *Circle) SetPositionVec(vec vector.Vector) + type Collision struct + Cells []*Cell + Objects []*Object + func NewCollision() *Collision + func (cc *Collision) ContactWithCell(cell *Cell) vector.Vector + func (cc *Collision) ContactWithObject(object *Object) vector.Vector + func (cc *Collision) HasTags(tags ...string) bool + func (cc *Collision) ObjectsByTags(tags ...string) []*Object + func (cc *Collision) SlideAgainstCell(cell *Cell, avoidTags ...string) vector.Vector + type ContactSet struct + Center vector.Vector + MTV vector.Vector + Points []vector.Vector + func NewContactSet() *ContactSet + func (cs *ContactSet) BottommostPoint() vector.Vector + func (cs *ContactSet) LeftmostPoint() vector.Vector + func (cs *ContactSet) RightmostPoint() vector.Vector + func (cs *ContactSet) TopmostPoint() vector.Vector + type ConvexPolygon struct + Closed bool + Points []vector.Vector + X float64 + Y float64 + func NewConvexPolygon(points ...float64) *ConvexPolygon + func NewRectangle(x, y, w, h float64) *ConvexPolygon + func (cp *ConvexPolygon) AddPoints(vertexPositions ...float64) + func (cp *ConvexPolygon) AddPointsVec(points ...vector.Vector) + func (cp *ConvexPolygon) Bounds() (vector.Vector, vector.Vector) + func (cp *ConvexPolygon) Center() vector.Vector + func (cp *ConvexPolygon) Clone() Shape + func (cp *ConvexPolygon) ContainedBy(otherShape Shape) bool + func (cp *ConvexPolygon) FlipH() + func (cp *ConvexPolygon) FlipV() + func (cp *ConvexPolygon) Intersection(dx, dy float64, other Shape) *ContactSet + func (cp *ConvexPolygon) Lines() []*Line + func (cp *ConvexPolygon) Move(x, y float64) + func (cp *ConvexPolygon) MoveVec(vec vector.Vector) + func (cp *ConvexPolygon) Position() (float64, float64) + func (cp *ConvexPolygon) Project(axis vector.Vector) Projection + func (cp *ConvexPolygon) ReverseVertexOrder() + func (cp *ConvexPolygon) SATAxes() []vector.Vector + func (cp *ConvexPolygon) SetPosition(x, y float64) + func (cp *ConvexPolygon) SetPositionVec(vec vector.Vector) + func (cp *ConvexPolygon) Transformed() []vector.Vector + func (polygon *ConvexPolygon) PointInside(point vector.Vector) bool + type Line struct + End vector.Vector + Start vector.Vector + func NewLine(x, y, x2, y2 float64) *Line + func (line *Line) IntersectionPointsCircle(circle *Circle) []vector.Vector + func (line *Line) IntersectionPointsLine(other *Line) vector.Vector + func (line *Line) Normal() vector.Vector + func (line *Line) Project(axis vector.Vector) vector.Vector + func (line *Line) Vector() vector.Vector + type Object struct + Data interface{} + H float64 + Shape Shape + Space *Space + TouchingCells []*Cell + W float64 + X float64 + Y float64 + func NewObject(x, y, w, h float64, tags ...string) *Object + func (obj *Object) AddTags(tags ...string) + func (obj *Object) AddToIgnoreList(ignoreObj *Object) + func (obj *Object) Bottom() float64 + func (obj *Object) BoundsToSpace(dx, dy float64) (int, int, int, int) + func (obj *Object) CellPosition() (int, int) + func (obj *Object) Center() (float64, float64) + func (obj *Object) Check(dx, dy float64, tags ...string) *Collision + func (obj *Object) Clone() *Object + func (obj *Object) HasTags(tags ...string) bool + func (obj *Object) Overlaps(other *Object) bool + func (obj *Object) RemoveFromIgnoreList(ignoreObj *Object) + func (obj *Object) RemoveTags(tags ...string) + func (obj *Object) Right() float64 + func (obj *Object) SetBottom(y float64) + func (obj *Object) SetBounds(topLeft, bottomRight vector.Vector) + func (obj *Object) SetCenter(x, y float64) + func (obj *Object) SetRight(x float64) + func (obj *Object) SharesCells(other *Object) bool + func (obj *Object) SharesCellsTags(tags ...string) bool + func (obj *Object) Tags() []string + func (obj *Object) ToImageRect() image.Rectangle + func (obj *Object) ToRectangle() *ConvexPolygon + func (obj *Object) Update() + type Projection struct + Max float64 + Min float64 + func (projection Projection) IsInside(other Projection) bool + func (projection Projection) Overlap(other Projection) float64 + func (projection Projection) Overlapping(other Projection) bool + type Shape interface + Bounds func() (vector.Vector, vector.Vector) + Clone func() Shape + Intersection func(dx, dy float64, other Shape) *ContactSet + Position func() (float64, float64) + SetPosition func(x, y float64) + type Space struct + CellHeight int + CellWidth int + Cells [][]*Cell + Objects []*Object + func NewSpace(spaceWidth, spaceHeight, cellWidth, cellHeight int) *Space + func (sp *Space) Add(objects ...*Object) + func (sp *Space) Cell(x, y int) *Cell + func (sp *Space) CellsInLine(startX, startY, endX, endY int) []*Cell + func (sp *Space) CheckCells(x, y, w, h int, tags ...string) *Object + func (sp *Space) Height() int + func (sp *Space) Remove(objects ...*Object) + func (sp *Space) Resize(width, height int) + func (sp *Space) SpaceToWorld(x, y int) (float64, float64) + func (sp *Space) UnregisterAllObjects() + func (sp *Space) Width() int + func (sp *Space) WorldToSpace(x, y float64) (int, int)