vec2

package
v0.0.0-...-1137f6a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 2, 2024 License: MIT Imports: 3 Imported by: 26

Documentation

Overview

Package vec2 contains a 2D float64 vector type T and functions.

Index

Constants

This section is empty.

Variables

View Source
var (
	// Zero holds a zero vector.
	Zero = T{}

	// UnitX holds a vector with X set to one.
	UnitX = T{1, 0}
	// UnitY holds a vector with Y set to one.
	UnitY = T{0, 1}
	// UnitXY holds a vector with X and Y set to one.
	UnitXY = T{1, 1}

	// MinVal holds a vector with the smallest possible component values.
	MinVal = T{-math.MaxFloat64, -math.MaxFloat64}
	// MaxVal holds a vector with the highest possible component values.
	MaxVal = T{+math.MaxFloat64, +math.MaxFloat64}
)

Functions

func Angle

func Angle(a, b *T) float64

Angle returns the angle value of the (shortest/smallest) angle between the two vectors a and b. The returned value is in the range 0 ≤ angle ≤ Pi radians.

func Cosine

func Cosine(a, b *T) float64

Cosine returns the cosine value of the angle between the two vectors. The returned cosine value is in the range -1.0 ≤ value ≤ 1.0.

func Cross

func Cross(a, b *T) float64

Cross returns the "cross product" of two vectors. In 2D space it is a scalar value. It is the same as the determinant value of the 2D matrix constructed by the two vectors. Cross product in 2D is not well-defined but this is the implementation stated at https://mathworld.wolfram.com/CrossProduct.html .

func Dot

func Dot(a, b *T) float64

Dot returns the dot product of two vectors.

func IsLeftWinding

func IsLeftWinding(a, b *T) bool

IsLeftWinding returns if the angle from a to b is left winding. Two parallell or anti parallell vectors will give a false result.

func IsRightWinding

func IsRightWinding(a, b *T) bool

IsRightWinding returns if the angle from a to b is right winding. Two parallell or anti parallell vectors will give a false result.

func PracticallyEquals

func PracticallyEquals(v1, v2, allowedDelta float64) bool

PracticallyEquals compares two values if they are equal with each other within a delta tolerance.

func Sinus

func Sinus(a, b *T) float64

Sinus returns the sinus value of the (shortest/smallest) angle between the two vectors a and b. The returned sine value is in the range -1.0 ≤ value ≤ 1.0. The angle is always considered to be in the range 0 to Pi radians and thus the sine value returned is always positive.

Types

type Rect

type Rect struct {
	Min T
	Max T
}

Rect is a coordinate system aligned rectangle defined by a Min and Max vector.

func Joined

func Joined(a, b *Rect) (rect Rect)

Joined returns the minimal rectangle containing both a and b.

func NewRect

func NewRect(a, b *T) (rect Rect)

NewRect creates a Rect from two points.

func ParseRect

func ParseRect(s string) (r Rect, err error)

ParseRect parses a Rect from a string. See also String()

func (*Rect) Area

func (rect *Rect) Area() float64

Area calculates the area of the rectangle.

func (*Rect) Contains

func (rect *Rect) Contains(other *Rect) bool

Contains returns if other Rect is contained within the rectangle.

func (*Rect) ContainsPoint

func (rect *Rect) ContainsPoint(p *T) bool

ContainsPoint returns if a point is contained within the rectangle.

func (*Rect) Join

func (rect *Rect) Join(other *Rect)

Join enlarges this rectangle to contain also the given rectangle.

func (*Rect) String

func (rect *Rect) String() string

String formats Rect as string. See also ParseRect().

type T

type T [2]float64

T represents a 2D vector.

func Add

func Add(a, b *T) T

Add adds the composants of the two vectors and returns a new vector with the sum of the two vectors.

func From

func From(other generic.T) T

From copies a T from a generic.T implementation.

func Interpolate

func Interpolate(a, b *T, t float64) T

Interpolate interpolates between a and b at t (0,1).

func Max

func Max(a, b *T) T

Max returns the component wise maximum of two vectors.

func Min

func Min(a, b *T) T

Min returns the component wise minimum of two vectors.

func Mul

func Mul(a, b *T) T

Mul returns the component wise product of two vectors.

func Parse

func Parse(s string) (r T, err error)

Parse parses T from a string. See also String()

func Sub

func Sub(a, b *T) T

Sub returns the difference of two vectors.

func (*T) Abs

func (vec *T) Abs() *T

Abs sets every component of the vector to its absolute value.

func (*T) Absed

func (vec *T) Absed() T

Absed returns a copy of the vector containing the absolute values.

func (*T) Add

func (vec *T) Add(v *T) *T

Add adds another vector to vec.

func (*T) Added

func (vec *T) Added(v *T) T

Added adds another vector to vec and returns a copy of the result

func (*T) Angle

func (vec *T) Angle() float64

Angle returns the counter-clockwise angle of the vector from the x axis.

func (*T) Clamp

func (vec *T) Clamp(min, max *T) *T

Clamp clamps the vector's components to be in the range of min to max.

func (*T) Clamp01

func (vec *T) Clamp01() *T

Clamp01 clamps the vector's components to be in the range of 0 to 1.

func (*T) Clamped

func (vec *T) Clamped(min, max *T) T

Clamped returns a copy of the vector with the components clamped to be in the range of min to max.

func (*T) Clamped01

func (vec *T) Clamped01() T

Clamped01 returns a copy of the vector with the components clamped to be in the range of 0 to 1.

func (*T) Cols

func (vec *T) Cols() int

Cols returns the number of columns of the vector.

func (*T) Get

func (vec *T) Get(col, row int) float64

Get returns one element of the vector.

func (*T) Invert

func (vec *T) Invert() *T

Invert inverts the vector.

func (*T) Inverted

func (vec *T) Inverted() T

Inverted returns an inverted copy of the vector.

func (*T) IsZero

func (vec *T) IsZero() bool

IsZero checks if all elements of the vector are zero.

func (*T) Length

func (vec *T) Length() float64

Length returns the length of the vector. See also LengthSqr and Normalize.

func (*T) LengthSqr

func (vec *T) LengthSqr() float64

LengthSqr returns the squared length of the vector. See also Length and Normalize.

func (*T) Mul

func (vec *T) Mul(v *T) *T

Mul multiplies the components of the vector with the respective components of v.

func (*T) Muled

func (vec *T) Muled(v *T) T

Muled multiplies the components of the vector with the respective components of v and returns a copy of the result

func (*T) Normal

func (vec *T) Normal() T

Normal returns a new normalized orthogonal vector. The normal is orthogonal clockwise to the vector. See also function Rotate90DegRight.

func (*T) NormalCCW

func (vec *T) NormalCCW() T

NormalCCW returns a new normalized orthogonal vector. The normal is orthogonal counterclockwise to the vector. See also function Rotate90DegLeft.

func (*T) Normalize

func (vec *T) Normalize() *T

Normalize normalizes the vector to unit length.

func (*T) Normalized

func (vec *T) Normalized() T

Normalized returns a unit length normalized copy of the vector.

func (*T) PracticallyEquals

func (vec *T) PracticallyEquals(compareVector *T, allowedDelta float64) bool

PracticallyEquals compares two vectors if they are equal with each other within a delta tolerance.

func (*T) Rotate

func (vec *T) Rotate(angle float64) *T

Rotate rotates the vector counter-clockwise by angle.

func (*T) Rotate90DegLeft

func (vec *T) Rotate90DegLeft() *T

Rotate90DegLeft rotates the vector 90 degrees left (counter-clockwise). See also function NormalCCW.

func (*T) Rotate90DegRight

func (vec *T) Rotate90DegRight() *T

Rotate90DegRight rotates the vector 90 degrees right (clockwise). See also function Normal.

func (*T) RotateAroundPoint

func (vec *T) RotateAroundPoint(point *T, angle float64) *T

RotateAroundPoint rotates the vector counter-clockwise around a point.

func (*T) Rotated

func (vec *T) Rotated(angle float64) T

Rotated returns a counter-clockwise rotated copy of the vector.

func (*T) Rows

func (vec *T) Rows() int

Rows returns the number of rows of the vector.

func (*T) Scale

func (vec *T) Scale(f float64) *T

Scale multiplies all element of the vector by f and returns vec.

func (*T) Scaled

func (vec *T) Scaled(f float64) T

Scaled returns a copy of vec with all elements multiplies by f.

func (*T) Size

func (vec *T) Size() int

Size returns the number elements of the vector.

func (*T) Slice

func (vec *T) Slice() []float64

Slice returns the elements of the vector as slice.

func (*T) String

func (vec *T) String() string

String formats T as string. See also Parse().

func (*T) Sub

func (vec *T) Sub(v *T) *T

Sub subtracts another vector from vec.

func (*T) Subed

func (vec *T) Subed(v *T) T

Subed subtracts another vector from vec and returns a copy of the result

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL