Documentation ¶
Index ¶
- Constants
- Variables
- func Clamp(v float64, min float64, max float64) float64
- func CloseEquals(a float64, b float64) bool
- func CloseZero(x float64) bool
- func ToDegress(radians float64) float64
- func ToRadians(degrees float64) float64
- type Mat3
- func (mat *Mat3) Clone() *Mat3
- func (mat *Mat3) Element(i int) float64
- func (mat *Mat3) Elements() []float64
- func (mat *Mat3) GetTrace(v *Vec3) *Vec3
- func (mat *Mat3) Multiply(other *Mat3) *Mat3
- func (mat *Mat3) MultiplyVec(v *Vec3) *Vec3
- func (mat *Mat3) Scale(v *Vec3) *Mat3
- func (mat *Mat3) ScaleMultiply(scale float64) *Mat3
- func (mat *Mat3) SetTrace(v *Vec3)
- func (mat *Mat3) String() string
- func (mat *Mat3) Transpose() *Mat3
- type Quaternion
- func (quaternion *Quaternion) Add(other *Quaternion) *Quaternion
- func (quaternion *Quaternion) Clone() *Quaternion
- func (quaternion *Quaternion) Conjugate() *Quaternion
- func (quaternion *Quaternion) Integrate(angularVelocity *Vec3, dt float64, angularFactor *Vec3) *Quaternion
- func (quaternion *Quaternion) Inverse() *Quaternion
- func (quaternion *Quaternion) Length() float64
- func (quaternion *Quaternion) Multiply(other *Quaternion) *Quaternion
- func (quaternion *Quaternion) MultiplyVec(vec *Vec3) *Vec3
- func (quaternion *Quaternion) Normalize() *Quaternion
- func (quaternion *Quaternion) Set(x float64, y float64, z float64, w float64) *Quaternion
- func (quaternion *Quaternion) Slerp(toQuaternion *Quaternion, t float64) *Quaternion
- func (quaternion *Quaternion) String() string
- func (quaternion *Quaternion) ToAxisAngle() (*Vec3, float64)
- func (quaternion *Quaternion) ToEuler() *Vec3
- type Range
- type Vec3
- func (vec *Vec3) Add(x float64) *Vec3
- func (vec *Vec3) AddVec(other *Vec3) *Vec3
- func (vec *Vec3) AlmostEquals(other *Vec3, precision float64) bool
- func (vec *Vec3) AlmostZero(precision float64) bool
- func (vec *Vec3) AngleTo(other *Vec3) float64
- func (vec *Vec3) Clone() *Vec3
- func (vec *Vec3) Cross(other *Vec3) *Vec3
- func (vec *Vec3) DistanceTo(other *Vec3) float64
- func (vec *Vec3) Divide(scale float64) *Vec3
- func (vec *Vec3) DivideVec(other *Vec3) *Vec3
- func (vec *Vec3) Dot(other *Vec3) float64
- func (vec *Vec3) IsAntiparallelTo(other *Vec3, precision float64) bool
- func (vec *Vec3) Length() float64
- func (vec *Vec3) Lerp(other *Vec3, t float64) *Vec3
- func (vec *Vec3) Multiply(scale float64) *Vec3
- func (vec *Vec3) MultiplyVec(other *Vec3) *Vec3
- func (vec *Vec3) Negate() *Vec3
- func (vec *Vec3) Normalize() *Vec3
- func (vec *Vec3) Set(x float64, y float64, z float64) *Vec3
- func (vec *Vec3) SetVec(other *Vec3) *Vec3
- func (vec *Vec3) SqrtDistanceTo(other *Vec3) float64
- func (vec *Vec3) SqrtLength() float64
- func (vec *Vec3) String() string
- func (vec *Vec3) Subtract(x float64) *Vec3
- func (vec *Vec3) SubtractVec(other *Vec3) *Vec3
- func (vec *Vec3) Tangents(t1 *Vec3, t2 *Vec3)
- func (vec *Vec3) Unit() *Vec3
Constants ¶
const Epsilon = 0.00000001
Epsilon is a calculation precision
Variables ¶
var GravitationalConstant float64 = 6.673e-11
GravitationalConstant is approximately 6.674×10−11 m3*kg^−1*s^−2
Functions ¶
func CloseEquals ¶
Types ¶
type Mat3 ¶
type Mat3 struct {
// contains filtered or unexported fields
}
Mat3 is a 3x3 matrix.
func Mat3FromQuaternion ¶
func Mat3FromQuaternion(q *Quaternion) *Mat3
Mat3FromQuaternion creates a matrix from the given Quaternion
func NewMat3 ¶
func NewMat3(e1 float64, e2 float64, e3 float64, e4 float64, e5 float64, e6 float64, e7 float64, e8 float64, e9 float64) *Mat3
NewMat3 creates a matrix with the given components
func (*Mat3) MultiplyVec ¶
MultiplyVec multiplicat given vector with Matrix
func (*Mat3) ScaleMultiply ¶
ScaleMultiply Matrix-scalar multiplication
type Quaternion ¶
A Quaternion describes a rotation in 3D space. The Quaternion is mathematically defined as Q = x*i + y*j + z*k + w, where (i,j,k) are imaginary basis vectors. (x,y,z) can be seen as a vector related to the axis of rotation, while the real multiplier, w, is related to the amount of rotation.
func NewQuaternion ¶
func NewQuaternion(x float64, y float64, z float64, w float64) *Quaternion
NewQuaternion creates a new quaternion with given values
func NewZeroQuaternion ¶
func NewZeroQuaternion() *Quaternion
NewZeroQuaternion creates a new zero quaternion [0,0,0,1]
func QuaternionFromAxisAngle ¶
func QuaternionFromAxisAngle(axis *Vec3, angle float64) *Quaternion
QuaternionFromAxisAngle creates the quaternion components from an axis and an angle
func QuaternionFromEuler ¶
func QuaternionFromEuler(vec *Vec3) *Quaternion
QuaternionFromEuler creates the quaternion from the given euler angels
func QuaternionFromVectors ¶
func QuaternionFromVectors(u *Vec3, v *Vec3) *Quaternion
QuaternionFromVectors creates a quaternion from the given two vectors.The resulting rotation will be the needed rotation to rotate u to v.
func (*Quaternion) Add ¶
func (quaternion *Quaternion) Add(other *Quaternion) *Quaternion
func (*Quaternion) Clone ¶
func (quaternion *Quaternion) Clone() *Quaternion
Clone this quaternion to new instance
func (*Quaternion) Conjugate ¶
func (quaternion *Quaternion) Conjugate() *Quaternion
Conjugate calculates the quaternion conjugate
func (*Quaternion) Integrate ¶
func (quaternion *Quaternion) Integrate(angularVelocity *Vec3, dt float64, angularFactor *Vec3) *Quaternion
Integrate rotate an absolute orientation quaternion given an angular velocity and a time step.
func (*Quaternion) Inverse ¶
func (quaternion *Quaternion) Inverse() *Quaternion
Inverse calculates the inverse quaternion rotation.
func (*Quaternion) Length ¶
func (quaternion *Quaternion) Length() float64
func (*Quaternion) Multiply ¶
func (quaternion *Quaternion) Multiply(other *Quaternion) *Quaternion
Multiply this quaternion by the given
func (*Quaternion) MultiplyVec ¶
func (quaternion *Quaternion) MultiplyVec(vec *Vec3) *Vec3
MultiplyVec multiply the quaternion by a vector
func (*Quaternion) Normalize ¶
func (quaternion *Quaternion) Normalize() *Quaternion
Normalize the quaternion
func (*Quaternion) Set ¶
func (quaternion *Quaternion) Set(x float64, y float64, z float64, w float64) *Quaternion
Set the value of the quaternion
func (*Quaternion) Slerp ¶
func (quaternion *Quaternion) Slerp(toQuaternion *Quaternion, t float64) *Quaternion
Slerp performs a spherical linear interpolation between two quat
func (*Quaternion) String ¶
func (quaternion *Quaternion) String() string
func (*Quaternion) ToAxisAngle ¶
func (quaternion *Quaternion) ToAxisAngle() (*Vec3, float64)
ToAxisAngle converts the quaternion to axis/angle representation.
func (*Quaternion) ToEuler ¶
func (quaternion *Quaternion) ToEuler() *Vec3
ToEuler convert the quaternion to euler angle representation, Order: YZX
type Vec3 ¶
Vec3 is a 3-dimensional vector
func (*Vec3) AlmostEquals ¶
AlmostEquals check if a vector equals is almost equal to another one.
func (*Vec3) AlmostZero ¶
AlmostZero check if a vector is almost zero
func (*Vec3) DistanceTo ¶
DistanceTo calculate distance from this point to another point
func (*Vec3) IsAntiparallelTo ¶
IsAntiparallelTo check if the vector is anti-parallel to another vector.
func (*Vec3) MultiplyVec ¶
MultiplyVec multiply the vector with an other vector, component-wise
func (*Vec3) SqrtDistanceTo ¶
SqrtDistanceTo calculate squared distance from this point to another point
func (*Vec3) SqrtLength ¶
SqrtLength calculate the squared length of the vector.
func (*Vec3) SubtractVec ¶
SubtractVec the given vector from this vector and retuns a new vector.