Documentation ¶
Overview ¶
Package argsort implements a variant of the sort function that returns a slice of indices that would sort the array.
The name comes from the popular Python numpy.Argsort function.
Index ¶
- Constants
- Variables
- func ArgMax(distances []float64) int
- func ArgMin(distances []float64) int
- func ArgSort(s sort.Interface) []int
- func BoolToFlag(b bool) float64
- func BoolToInt(b bool) int
- func ClampedFloat(v float64, min float64, max float64) float64
- func ClampedFloat32(v float32, min float32, max float32) float32
- func Contains[S ~[]E, E comparable](s S, v E) bool
- func DegToRad(deg float64) float64
- func DistanceFromPlaneToLine(near, far, forward, right, up, p *MVec3) float64
- func DistanceFromPointToLine(a, b, p *MVec3) float64
- func DistanceLineToPoints(worldPos *MVec3, points []*MVec3) []float64
- func Distances(v *MVec3, others []*MVec3) []float64
- func Dot4(a, b *MVec4) float64
- func Evaluate(curve *Curve, start, now, end int) (float64, float64, float64)
- func FindInflectionPoints(values []float64, tolerance float64, space int) map[int]int
- func FindSlerpT(Q1, Q2, Qt *MQuaternion) float64
- func FindSlerpTBisection(Q1, Q2, Qt *MQuaternion, tol float64) float64
- func IsPowerOfTwo(n int) bool
- func LerpFloat(v1, v2 float64, t float64) float64
- func MaxFloat(arr []float64) float64
- func MaxInt(arr []int) int
- func Mean(nums []float64) float64
- func Mean2DHorizontal(nums [][]float64) []float64
- func Mean2DVertical(nums [][]float64) []float64
- func Median(nums []float64) float64
- func MergeInflectionPoints(values []float64, inflectionPointsList []map[int]int, space int) map[int]int
- func NearEquals(v float64, other float64, epsilon float64) bool
- func RadToDeg(rad float64) float64
- func SearchFloat32s(a []float32, x float32) int
- func SearchFloat64s(a []float64, x float64) int
- func SearchInts(a []int, x int) int
- func Sign(v float64) float64
- func SortFloat32s(x []float32)
- func SortFloat64s(x []float64)
- func SortInto(s sort.Interface, indices []int)
- func SortInts(x []int)
- func SortSlice(slice interface{}, less func(i, j int) bool) []int
- func SortSliceInto(slice interface{}, indices []int, less func(i, j int) bool)
- func SplitCurve(curve *Curve, start, now, end int) (*Curve, *Curve)
- func Std(nums []float64) float64
- func ThetaToRad(theta float64) float64
- func ToDegree(radian float64) float64
- func ToRadian(degree float64) float64
- func VectorToDegree(a *MVec3, b *MVec3) float64
- func VectorToRadian(a *MVec3, b *MVec3) float64
- type Curve
- type Float32Slice
- type Float64Slice
- type IntSlice
- type MMat3
- type MMat4
- func (mat *MMat4) AxisX() *MVec3
- func (mat *MMat4) AxisY() *MVec3
- func (mat *MMat4) AxisZ() *MVec3
- func (mat *MMat4) ClampIfVerySmall() *MMat4
- func (m *MMat4) Copy() *MMat4
- func (m *MMat4) Det() float64
- func (m *MMat4) Inverse() *MMat4
- func (mat *MMat4) Inverted() *MMat4
- func (m *MMat4) IsIdent() bool
- func (m *MMat4) IsZero() bool
- func (mat *MMat4) Mat3() *MMat3
- func (m1 *MMat4) Mul(m2 *MMat4) *MMat4
- func (mat *MMat4) MulScalar(v float64) *MMat4
- func (mat *MMat4) MulVec3(other *MVec3) *MVec3
- func (m1 *MMat4) Muled(m2 *MMat4) *MMat4
- func (mat *MMat4) MuledScalar(v float64) *MMat4
- func (m *MMat4) NearEquals(other *MMat4, tolerance float64) bool
- func (mat *MMat4) Quaternion() *MQuaternion
- func (mat *MMat4) Rotate(quat *MQuaternion) *MMat4
- func (mat *MMat4) Rotated(quat *MQuaternion) *MMat4
- func (mat *MMat4) Scale(s *MVec3) *MMat4
- func (mat *MMat4) Scaled(s *MVec3) *MMat4
- func (mat *MMat4) Scaling() *MVec3
- func (m *MMat4) String() string
- func (mat *MMat4) Trace() float64
- func (mat *MMat4) Trace3() float64
- func (mat *MMat4) Translate(v *MVec3) *MMat4
- func (mat *MMat4) Translated(v *MVec3) *MMat4
- func (mat *MMat4) Translation() *MVec3
- func (mat *MMat4) Transpose() *MMat4
- type MQuaternion
- func NewMQuaternion() *MQuaternion
- func NewMQuaternionByValues(x, y, z, w float64) *MQuaternion
- func NewMQuaternionByValuesShort(x, y, z, w float64) *MQuaternion
- func NewMQuaternionFromAxes(xAxis, yAxis, zAxis *MVec3) *MQuaternion
- func NewMQuaternionFromAxisAngles(axis *MVec3, angle float64) *MQuaternion
- func NewMQuaternionFromAxisAnglesRotate(axis *MVec3, angle float64) *MQuaternion
- func NewMQuaternionFromDegrees(xPitch, yHead, zRoll float64) *MQuaternion
- func NewMQuaternionFromDirection(direction *MVec3, up *MVec3) *MQuaternion
- func NewMQuaternionFromRadians(xPitch, yHead, zRoll float64) *MQuaternion
- func NewMQuaternionRotate(fromV, toV *MVec3) *MQuaternion
- func (qq *MQuaternion) Copy() *MQuaternion
- func (quat *MQuaternion) Dot(other *MQuaternion) float64
- func (v *MQuaternion) GetW() float64
- func (v *MQuaternion) GetX() float64
- func (v *MQuaternion) GetXYZ() *MVec3
- func (v *MQuaternion) GetY() float64
- func (v *MQuaternion) GetZ() float64
- func (quat *MQuaternion) Inverse() *MQuaternion
- func (quat *MQuaternion) Inverted() *MQuaternion
- func (quat *MQuaternion) IsIdent() bool
- func (quat *MQuaternion) IsShortestRotation(other *MQuaternion) bool
- func (quat *MQuaternion) IsUnitQuat(tolerance float64) bool
- func (quat *MQuaternion) Length() float64
- func (q *MQuaternion) Lerp(other *MQuaternion, t float64) *MQuaternion
- func (v *MQuaternion) MMD() *MQuaternion
- func (q1 *MQuaternion) Mul(q2 *MQuaternion) *MQuaternion
- func (q1 *MQuaternion) MulShort(q2 *MQuaternion) *MQuaternion
- func (quat *MQuaternion) MulVec3(v *MVec3) *MVec3
- func (q1 *MQuaternion) Muled(q2 *MQuaternion) *MQuaternion
- func (quat *MQuaternion) MuledScalar(factor float64) *MQuaternion
- func (q1 *MQuaternion) MuledShort(q2 *MQuaternion) *MQuaternion
- func (quat *MQuaternion) NearEquals(other *MQuaternion, epsilon float64) bool
- func (quat *MQuaternion) Negate() *MQuaternion
- func (quat *MQuaternion) Negated() *MQuaternion
- func (quat *MQuaternion) Norm() float64
- func (quat *MQuaternion) Normalize() *MQuaternion
- func (quat *MQuaternion) Normalized() *MQuaternion
- func (quat *MQuaternion) SeparateByAxis(globalAxis *MVec3) (*MQuaternion, *MQuaternion, *MQuaternion)
- func (quat *MQuaternion) SeparateTwistByAxis(globalAxis *MVec3) (*MQuaternion, *MQuaternion)
- func (quat *MQuaternion) SetShortestRotation(other *MQuaternion) *MQuaternion
- func (v *MQuaternion) SetW(w float64)
- func (v *MQuaternion) SetX(x float64)
- func (v *MQuaternion) SetXYZ(vec3 *MVec3)
- func (v *MQuaternion) SetY(y float64)
- func (v *MQuaternion) SetZ(z float64)
- func (quat *MQuaternion) Shorten() *MQuaternion
- func (a *MQuaternion) Slerp(b *MQuaternion, t float64) *MQuaternion
- func (v *MQuaternion) String() string
- func (quat *MQuaternion) ToAxisAngle() (*MVec3, float64)
- func (quat *MQuaternion) ToDegree() float64
- func (quat *MQuaternion) ToDegrees() *MVec3
- func (quat *MQuaternion) ToFixedAxisRotation(fixedAxis *MVec3) *MQuaternion
- func (quat *MQuaternion) ToMMDDegrees() *MVec3
- func (v *MQuaternion) ToMat4() *MMat4
- func (quat *MQuaternion) ToRadian() float64
- func (v *MQuaternion) ToRadians() *MVec3
- func (v *MQuaternion) ToRadiansWithGimbal(axisIndex int) (*MVec3, bool)
- func (quat *MQuaternion) ToSignedDegree() float64
- func (quat *MQuaternion) ToSignedRadian() float64
- func (quat *MQuaternion) ToTheta(v *MQuaternion) float64
- func (quat *MQuaternion) Vec3() *MVec3
- func (quat *MQuaternion) Vec4() *MVec4
- func (v *MQuaternion) Vector() []float64
- type MRect
- type MRotation
- func (rot *MRotation) Copy() *MRotation
- func (m *MRotation) GetDegrees() *MVec3
- func (m *MRotation) GetDegreesMMD() *MVec3
- func (m *MRotation) GetQuaternion() *MQuaternion
- func (m *MRotation) GetRadians() *MVec3
- func (m *MRotation) GetRadiansMMD() *MVec3
- func (rot *MRotation) Mul(v *MRotation)
- func (m *MRotation) SetDegrees(v *MVec3)
- func (m *MRotation) SetQuaternion(v *MQuaternion)
- func (m *MRotation) SetRadians(v *MVec3)
- func (rot *MRotation) String() string
- type MVec2
- func (v *MVec2) Abs() *MVec2
- func (v *MVec2) Absed() *MVec2
- func (v *MVec2) Add(other *MVec2) *MVec2
- func (v *MVec2) AddScalar(s float64) *MVec2
- func (v *MVec2) AddX(x float64)
- func (v *MVec2) AddY(y float64)
- func (v *MVec2) Added(other *MVec2) *MVec2
- func (v *MVec2) AddedScalar(s float64) *MVec2
- func (a *MVec2) Angle(b *MVec2) float64
- func (v *MVec2) Clamp(min, max *MVec2) *MVec2
- func (v *MVec2) Clamp01() *MVec2
- func (v *MVec2) ClampIfVerySmall() *MVec2
- func (v *MVec2) Clamped(min, max *MVec2) *MVec2
- func (v *MVec2) Clamped01() *MVec2
- func (v *MVec2) Copy() *MVec2
- func (v *MVec2) Cross(other *MVec2) *MVec2
- func (v *MVec2) Degree(other *MVec2) float64
- func (v *MVec2) Distance(other *MVec2) float64
- func (v *MVec2) Div(other *MVec2) *MVec2
- func (v *MVec2) DivScalar(s float64) *MVec2
- func (v *MVec2) Dived(other *MVec2) *MVec2
- func (v *MVec2) DivedScalar(s float64) *MVec2
- func (v *MVec2) Dot(other *MVec2) float64
- func (v *MVec2) Equals(other *MVec2) bool
- func (v *MVec2) GetX() float64
- func (v *MVec2) GetY() float64
- func (v *MVec2) GreaterThan(other *MVec2) bool
- func (v *MVec2) GreaterThanOrEquals(other *MVec2) bool
- func (v *MVec2) Hash() uint64
- func (v *MVec2) Inverse() *MVec2
- func (v *MVec2) Inverted() *MVec2
- func (v *MVec2) IsZero() bool
- func (v *MVec2) Length() float64
- func (v *MVec2) LengthSqr() float64
- func (v *MVec2) LessThan(other *MVec2) bool
- func (v *MVec2) LessThanOrEquals(other *MVec2) bool
- func (v *MVec2) MMD() *MVec2
- func (v *MVec2) Max() *MVec2
- func (v *MVec2) Min() *MVec2
- func (v *MVec2) Mul(other *MVec2) *MVec2
- func (v *MVec2) MulScalar(s float64) *MVec2
- func (v *MVec2) Muled(other *MVec2) *MVec2
- func (v *MVec2) MuledScalar(s float64) *MVec2
- func (v *MVec2) NearEquals(other *MVec2, epsilon float64) bool
- func (v *MVec2) Normalize() *MVec2
- func (v *MVec2) Normalized() *MVec2
- func (v *MVec2) NotEquals(other MVec2) bool
- func (v *MVec2) One() *MVec2
- func (v *MVec2) Rotate(angle float64) *MVec2
- func (v *MVec2) Rotate90DegLeft() *MVec2
- func (v *MVec2) Rotate90DegRight() *MVec2
- func (v *MVec2) RotateAroundPoint(point *MVec2, angle float64) *MVec2
- func (v *MVec2) Rotated(angle float64) *MVec2
- func (v *MVec2) Round() *MVec2
- func (v *MVec2) SetX(x float64)
- func (v *MVec2) SetY(y float64)
- func (v *MVec2) String() string
- func (v *MVec2) Sub(other *MVec2) *MVec2
- func (v *MVec2) SubScalar(s float64) *MVec2
- func (v *MVec2) Subed(other *MVec2) *MVec2
- func (v *MVec2) SubedScalar(s float64) *MVec2
- func (v *MVec2) Vector() []float64
- type MVec3
- func CalculateBoundingBox(points ...*MVec3) (minPos, maxPos *MVec3)
- func GetVertexLocalPositions(vertexPositions []*MVec3, startBonePosition *MVec3, endBonePosition *MVec3) []*MVec3
- func IntersectLinePlane(near, far, forward, right, up, p *MVec3) *MVec3
- func NewMVec3() *MVec3
- func StdMeanVec3(values []MVec3, err float64) *MVec3
- func (v *MVec3) Abs() *MVec3
- func (v *MVec3) Absed() *MVec3
- func (v *MVec3) Add(other *MVec3) *MVec3
- func (v *MVec3) AddScalar(s float64) *MVec3
- func (v *MVec3) AddX(x float64)
- func (v *MVec3) AddY(y float64)
- func (v *MVec3) AddZ(z float64)
- func (v *MVec3) Added(other *MVec3) *MVec3
- func (v *MVec3) AddedScalar(s float64) *MVec3
- func (v *MVec3) Angle(other *MVec3) float64
- func (v *MVec3) Clamp(min, max *MVec3) *MVec3
- func (v *MVec3) Clamp01() *MVec3
- func (v *MVec3) ClampIfVerySmall() *MVec3
- func (v *MVec3) Clamped(min, max *MVec3) *MVec3
- func (v *MVec3) Clamped01() *MVec3
- func (v *MVec3) Copy() *MVec3
- func (v1 *MVec3) Cross(v2 *MVec3) *MVec3
- func (v *MVec3) Degree(other *MVec3) float64
- func (v *MVec3) Distance(other *MVec3) float64
- func (v *MVec3) Distances(others []*MVec3) []float64
- func (v *MVec3) Div(other *MVec3) *MVec3
- func (v *MVec3) DivScalar(s float64) *MVec3
- func (v *MVec3) DivX(x float64)
- func (v *MVec3) DivY(y float64)
- func (v *MVec3) DivZ(z float64)
- func (v *MVec3) Dived(other *MVec3) *MVec3
- func (v *MVec3) DivedScalar(s float64) *MVec3
- func (v *MVec3) Dot(other *MVec3) float64
- func (v *MVec3) Equals(other *MVec3) bool
- func (v *MVec3) GetX() float64
- func (v *MVec3) GetXY() *MVec2
- func (v *MVec3) GetY() float64
- func (v *MVec3) GetZ() float64
- func (v *MVec3) GreaterThan(other *MVec3) bool
- func (v *MVec3) GreaterThanOrEquals(other *MVec3) bool
- func (v *MVec3) Hash() uint64
- func (v *MVec3) Interpolate(other *MVec3, t float64) *MVec3
- func (v *MVec3) Inverse() *MVec3
- func (v *MVec3) Inverted() *MVec3
- func (v *MVec3) IsOne() bool
- func (v *MVec3) IsOnlyX() bool
- func (v *MVec3) IsOnlyY() bool
- func (v *MVec3) IsOnlyZ() bool
- func (point *MVec3) IsPointInsideBox(min, max *MVec3) bool
- func (v *MVec3) IsZero() bool
- func (v *MVec3) Length() float64
- func (v *MVec3) LengthSqr() float64
- func (v1 *MVec3) Lerp(v2 *MVec3, t float64) *MVec3
- func (v *MVec3) LessThan(other *MVec3) bool
- func (v *MVec3) LessThanOrEquals(other *MVec3) bool
- func (v *MVec3) MMD() *MVec3
- func (v *MVec3) Max() *MVec3
- func (v *MVec3) Min() *MVec3
- func (v *MVec3) Mul(other *MVec3) *MVec3
- func (v *MVec3) MulScalar(s float64) *MVec3
- func (v *MVec3) MulX(x float64)
- func (v *MVec3) MulY(y float64)
- func (v *MVec3) MulZ(z float64)
- func (v *MVec3) Muled(other *MVec3) *MVec3
- func (v *MVec3) MuledScalar(s float64) *MVec3
- func (v *MVec3) NearEquals(other *MVec3, epsilon float64) bool
- func (v *MVec3) Normalize() *MVec3
- func (v *MVec3) Normalized() *MVec3
- func (v *MVec3) NotEquals(other MVec3) bool
- func (v *MVec3) One() *MVec3
- func (v *MVec3) Project(other *MVec3) *MVec3
- func (v *MVec3) Round() *MVec3
- func (v *MVec3) SetX(x float64)
- func (v *MVec3) SetY(y float64)
- func (v *MVec3) SetZ(z float64)
- func (v *MVec3) String() string
- func (v *MVec3) Sub(other *MVec3) *MVec3
- func (v *MVec3) SubScalar(s float64) *MVec3
- func (v *MVec3) SubX(x float64)
- func (v *MVec3) SubY(y float64)
- func (v *MVec3) SubZ(z float64)
- func (v *MVec3) Subed(other *MVec3) *MVec3
- func (v *MVec3) SubedScalar(s float64) *MVec3
- func (v *MVec3) ToLocalMatrix4x4() *MMat4
- func (v *MVec3) ToMat4() *MMat4
- func (v *MVec3) ToScaleMat4() *MMat4
- func (a *MVec3) Vec3Diff(b *MVec3) *MQuaternion
- func (v *MVec3) Vector() []float64
- type MVec4
- func (v *MVec4) Abs() *MVec4
- func (v *MVec4) Absed() *MVec4
- func (v *MVec4) Add(other *MVec4) *MVec4
- func (v *MVec4) AddScalar(s float64) *MVec4
- func (v *MVec4) AddW(w float64)
- func (v *MVec4) AddX(x float64)
- func (v *MVec4) AddY(y float64)
- func (v *MVec4) AddZ(z float64)
- func (v *MVec4) Added(other *MVec4) *MVec4
- func (v *MVec4) AddedScalar(s float64) *MVec4
- func (v *MVec4) Angle(other *MVec4) float64
- func (v *MVec4) Clamp(min, max *MVec4) *MVec4
- func (v *MVec4) Clamp01() *MVec4
- func (v *MVec4) ClampIfVerySmall() *MVec4
- func (v *MVec4) Clamped(min, max *MVec4) *MVec4
- func (v *MVec4) Clamped01() *MVec4
- func (v *MVec4) Copy() *MVec4
- func (v *MVec4) Cross(other *MVec4) *MVec4
- func (v *MVec4) Degree(other *MVec4) float64
- func (v *MVec4) Distance(other *MVec4) float64
- func (v *MVec4) Div(other *MVec4) *MVec4
- func (v *MVec4) DivScalar(s float64) *MVec4
- func (v *MVec4) DivW(w float64)
- func (v *MVec4) DivX(x float64)
- func (v *MVec4) DivY(y float64)
- func (v *MVec4) DivZ(z float64)
- func (v *MVec4) Dived(other *MVec4) *MVec4
- func (v *MVec4) DivedScalar(s float64) *MVec4
- func (vec *MVec4) DivideByW() *MVec4
- func (vec *MVec4) DividedByW() *MVec4
- func (v *MVec4) Dot(other *MVec4) float64
- func (v *MVec4) Equals(other *MVec4) bool
- func (v *MVec4) GetW() float64
- func (v *MVec4) GetX() float64
- func (v *MVec4) GetXY() *MVec2
- func (v *MVec4) GetXYZ() *MVec3
- func (v *MVec4) GetY() float64
- func (v *MVec4) GetZ() float64
- func (v *MVec4) GreaterThan(other *MVec4) bool
- func (v *MVec4) GreaterThanOrEquals(other *MVec4) bool
- func (v *MVec4) Hash() uint64
- func (v *MVec4) Interpolate(other *MVec4, t float64) *MVec4
- func (v *MVec4) Inverse() *MVec4
- func (v *MVec4) Inverted() *MVec4
- func (v *MVec4) IsZero() bool
- func (v *MVec4) Length() float64
- func (v *MVec4) LengthSqr() float64
- func (v1 *MVec4) Lerp(v2 *MVec4, t float64) *MVec4
- func (v *MVec4) LessThan(other *MVec4) bool
- func (v *MVec4) LessThanOrEquals(other *MVec4) bool
- func (v *MVec4) MMD() *MVec4
- func (v *MVec4) Max() *MVec4
- func (v *MVec4) Min() *MVec4
- func (v *MVec4) Mul(other *MVec4) *MVec4
- func (v *MVec4) MulScalar(s float64) *MVec4
- func (v *MVec4) MulW(w float64)
- func (v *MVec4) MulX(x float64)
- func (v *MVec4) MulY(y float64)
- func (v *MVec4) MulZ(z float64)
- func (v *MVec4) Muled(other *MVec4) *MVec4
- func (v *MVec4) MuledScalar(s float64) *MVec4
- func (v *MVec4) NearEquals(other *MVec4, epsilon float64) bool
- func (v *MVec4) Normalize() *MVec4
- func (v *MVec4) Normalized() *MVec4
- func (v *MVec4) NotEquals(other MVec4) bool
- func (v *MVec4) One() *MVec4
- func (v *MVec4) Round() *MVec4
- func (v *MVec4) SetW(w float64)
- func (v *MVec4) SetX(x float64)
- func (v *MVec4) SetY(y float64)
- func (v *MVec4) SetZ(z float64)
- func (v *MVec4) String() string
- func (v *MVec4) Sub(other *MVec4) *MVec4
- func (v *MVec4) SubScalar(s float64) *MVec4
- func (v *MVec4) SubW(w float64)
- func (v *MVec4) SubX(x float64)
- func (v *MVec4) SubY(y float64)
- func (v *MVec4) SubZ(z float64)
- func (v *MVec4) Subed(other *MVec4) *MVec4
- func (v *MVec4) SubedScalar(s float64) *MVec4
- func (vec *MVec4) Vec3DividedByW() *MVec3
- func (v *MVec4) Vector() []float64
Constants ¶
const ( GIMBAL1_RAD = 88.0 / 180.0 * math.Pi GIMBAL2_RAD = GIMBAL1_RAD * 2 ONE_RAD = math.Pi HALF_RAD = math.Pi / 2 )
const (
// MMDでの補間曲線の最大値
CURVE_MAX = 127.0
)
Variables ¶
var ( // Zero holds a zero matrix. MMat3Zero = MMat3{ 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Ident holds an ident matrix. MMat3Ident = MMat3{ 1, 0, 0, 0, 1, 0, 0, 0, 1, } )
var ( // Zero holds a zero matrix. MMat4Zero = MMat4{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Ident holds an ident matrix. MMat4Ident = MMat4{ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, } )
var ( // Zero holds a zero quaternion. MQuaternionZero = MQuaternion{} // Ident holds an ident quaternion. MQuaternionIdent = MQuaternion{1., mgl64.Vec3{0, 0, 0}} )
var ( MVec2Zero = MVec2{} // UnitX holds a vector with X set to one. MVec2UnitX = MVec2{1, 0} // UnitY holds a vector with Y set to one. MVec2UnitY = MVec2{0, 1} // UnitXY holds a vector with X and Y set to one. MVec2UnitXY = MVec2{1, 1} // MinVal holds a vector with the smallest possible component values. MVec2MinVal = MVec2{-math.MaxFloat64, -math.MaxFloat64} // MaxVal holds a vector with the highest possible component values. MVec2MaxVal = MVec2{+math.MaxFloat64, +math.MaxFloat64} )
var ( MVec3Zero = &MVec3{} MVec3UnitX = &MVec3{1, 0, 0} MVec3UnitY = &MVec3{0, 1, 0} MVec3UnitZ = &MVec3{0, 0, 1} MVec3One = &MVec3{1, 1, 1} MVec3UnitXInv = &MVec3{-1, 0, 0} MVec3UnitYInv = &MVec3{0, -1, 0} MVec3UnitZInv = &MVec3{0, 0, -1} MVec3OneInv = &MVec3{-1, -1, -1} MVec3MinVal = &MVec3{-math.MaxFloat64, -math.MaxFloat64, -math.MaxFloat64} MVec3MaxVal = &MVec3{+math.MaxFloat64, +math.MaxFloat64, +math.MaxFloat64} )
var ( MVec4Zero = &MVec4{} // UnitXW holds a vector with X and W set to one. MVec4UnitXW = &MVec4{1, 0, 0, 1} // UnitYW holds a vector with Y and W set to one. MVec4UnitYW = &MVec4{0, 1, 0, 1} // UnitZW holds a vector with Z and W set to one. MVec4UnitZW = &MVec4{0, 0, 1, 1} // UnitW holds a vector with W set to one. MVec4UnitW = &MVec4{0, 0, 0, 1} // UnitXYZW holds a vector with X, Y, Z, W set to one. MVec4One = &MVec4{1, 1, 1, 1} // MinVal holds a vector with the smallest possible component values. MVec4MinVal = &MVec4{-math.MaxFloat64, -math.MaxFloat64, -math.MaxFloat64, 1} // MaxVal holds a vector with the highest possible component values. MVec4MaxVal = &MVec4{+math.MaxFloat64, +math.MaxFloat64, +math.MaxFloat64, 1} )
var LINER_CURVE = &Curve{ Start: MVec2{20.0, 20.0}, End: MVec2{107.0, 107.0}, }
Functions ¶
func BoolToFlag ¶
func ClampedFloat ¶
Clamp01 ベクトルの各要素をmin~maxの範囲内にクランプします
func ClampedFloat32 ¶
Clamp01 ベクトルの各要素をmin~maxの範囲内にクランプします
func DistanceFromPlaneToLine ¶
2点間のベクトルと、点Pを含むカメラ平面と平行な面、との距離を計算
func DistanceFromPointToLine ¶
2点間のベクトルと点Pの直交距離を計算
func DistanceLineToPoints ¶
DistanceLineToPoints 線分と点の距離を計算します
func Evaluate ¶
https://pomax.github.io/bezierinfo https://shspage.hatenadiary.org/entry/20140625/1403702735 https://bezier.readthedocs.io/en/stable/python/reference/bezier.curve.html#bezier.curve.Curve.evaluate https://edvakf.hatenadiary.org/entry/20111016/1318716097 Evaluate 補間曲線を求めます。 return x(計算キーフレ時点のX値), y(計算キーフレ時点のY値), t(計算キーフレまでの変化量)
func FindInflectionPoints ¶
func FindSlerpT ¶
func FindSlerpT(Q1, Q2, Qt *MQuaternion) float64
FindSlerpTは始点Q1、終点Q2、中間点Qtが与えられたとき、Slerp(Q1, Q2, t) ? Qtとなるtを見つけます。
func FindSlerpTBisection ¶
func FindSlerpTBisection(Q1, Q2, Qt *MQuaternion, tol float64) float64
FindSlerpTBisectionは始点Q1、終点Q2、中間点Qtが与えられたとき、Slerp(Q1, Q2, t) ? Qtとなるtを二分法で見つけます。
func IsPowerOfTwo ¶
func MergeInflectionPoints ¶
func SearchFloat32s ¶
func SearchFloat64s ¶
func SearchInts ¶
func SortFloat32s ¶
func SortFloat32s(x []float32)
func SortFloat64s ¶
func SortFloat64s(x []float64)
func SortInto ¶
SortInto sorts s and populates the indices slice with the indices that would sort the input slice.
func SortSliceInto ¶
SortSliceInto sorts a slice and populates the indices slice with the indices that would sort the input slice.
func SplitCurve ¶
SplitCurve 補間曲線を指定キーフレで前後に分割する
func ThetaToRad ¶
func VectorToDegree ¶
VectorToDegreeは、与えられた2つのベクトルから角度に変換します。
func VectorToRadian ¶
VectorToRadianは、与えられた2つのベクトルからラジアン角度に変換します。
Types ¶
type Curve ¶
func NewCurveByValues ¶
func NewCurveFromValues ¶
NewCurveFromValues calculates the control points of a cubic Bezier curve that best fits a given set of y-values.
type Float32Slice ¶
type Float32Slice []float32
Float32Slice implements Interface for a []float32, sorting in increasing order, with not-a-number (NaN) values ordered before other values.
func (Float32Slice) Len ¶
func (x Float32Slice) Len() int
func (Float32Slice) Less ¶
func (x Float32Slice) Less(i, j int) bool
Less reports whether x[i] should be ordered before x[j], as required by the sort Interface. Note that floating-point comparison by itself is not a transitive relation: it does not report a consistent ordering for not-a-number (NaN) values. This implementation of Less places NaN values before any others, by using:
x[i] < x[j] || (math.IsNaN(x[i]) && !math.IsNaN(x[j]))
func (Float32Slice) Sort ¶
func (x Float32Slice) Sort()
Sort is a convenience method: x.Sort() calls Sort(x).
func (Float32Slice) Swap ¶
func (x Float32Slice) Swap(i, j int)
type Float64Slice ¶
type Float64Slice []float64
Float64Slice implements Interface for a []float64, sorting in increasing order, with not-a-number (NaN) values ordered before other values.
func (Float64Slice) Len ¶
func (x Float64Slice) Len() int
func (Float64Slice) Less ¶
func (x Float64Slice) Less(i, j int) bool
Less reports whether x[i] should be ordered before x[j], as required by the sort Interface. Note that floating-point comparison by itself is not a transitive relation: it does not report a consistent ordering for not-a-number (NaN) values. This implementation of Less places NaN values before any others, by using:
x[i] < x[j] || (math.IsNaN(x[i]) && !math.IsNaN(x[j]))
func (Float64Slice) Sort ¶
func (x Float64Slice) Sort()
Sort is a convenience method: x.Sort() calls Sort(x).
func (Float64Slice) Swap ¶
func (x Float64Slice) Swap(i, j int)
type IntSlice ¶
type IntSlice []int
IntSlice implements Interface for a []int, sorting in increasing order, with not-a-number (NaN) values ordered before other values.
func (IntSlice) Less ¶
Less reports whether x[i] should be ordered before x[j], as required by the sort Interface. Note that floating-point comparison by itself is not a transitive relation: it does not report a consistent ordering for not-a-number (NaN) values. This implementation of Less places NaN values before any others, by using:
x[i] < x[j] || (math.IsNaN(x[i]) && !math.IsNaN(x[j]))
type MMat3 ¶
func NewMMat3ByValues ¶
type MMat4 ¶
func NewMMat4ByValues ¶
func NewMMat4FromAxisAngle ¶
func NewMMat4FromLookAt ¶
func (*MMat4) ClampIfVerySmall ¶
ClampIfVerySmall ベクトルの各要素がとても小さい場合、ゼロを設定する
func (*MMat4) MulVec3 ¶
MulVec3 multiplies v (converted to a vec4 as (v_1, v_2, v_3, 1)) with mat and divides the result by w. Returns a new vec3.
func (*MMat4) MuledScalar ¶
func (*MMat4) NearEquals ¶
NearEquals
func (*MMat4) Quaternion ¶
func (mat *MMat4) Quaternion() *MQuaternion
func (*MMat4) Rotate ¶
func (mat *MMat4) Rotate(quat *MQuaternion) *MMat4
func (*MMat4) Rotated ¶
func (mat *MMat4) Rotated(quat *MQuaternion) *MMat4
func (*MMat4) Translated ¶
type MQuaternion ¶
func NewMQuaternion ¶
func NewMQuaternion() *MQuaternion
func NewMQuaternionByValues ¶
func NewMQuaternionByValues(x, y, z, w float64) *MQuaternion
NewMQuaternionByValuesOriginal は、指定された値でクォータニオンを作成します。 ただし、強制的に最短距離クォータニオンにはしません
func NewMQuaternionByValuesShort ¶
func NewMQuaternionByValuesShort(x, y, z, w float64) *MQuaternion
指定された値でクォータニオンを作成します。 ただし必ず最短距離クォータニオンにします
func NewMQuaternionFromAxes ¶
func NewMQuaternionFromAxes(xAxis, yAxis, zAxis *MVec3) *MQuaternion
NewMQuaternionFromAxesは、3つの軸ベクトルからクォータニオンを作成します。
func NewMQuaternionFromAxisAngles ¶
func NewMQuaternionFromAxisAngles(axis *MVec3, angle float64) *MQuaternion
NewMQuaternionFromAxisAngles は、軸周りの回転を表す四元数を返します。
func NewMQuaternionFromAxisAnglesRotate ¶
func NewMQuaternionFromAxisAnglesRotate(axis *MVec3, angle float64) *MQuaternion
NewMQuaternionFromAxisAnglesRotate は、軸周りの回転を表す四元数を返します。
func NewMQuaternionFromDegrees ¶
func NewMQuaternionFromDegrees(xPitch, yHead, zRoll float64) *MQuaternion
NewMQuaternionFromDegreesは、オイラー角(度)回転を表す四元数を返します。
func NewMQuaternionFromDirection ¶
func NewMQuaternionFromDirection(direction *MVec3, up *MVec3) *MQuaternion
NewMQuaternionFromDirectionは、軸と角度からクォータニオンに変換します。
func NewMQuaternionFromRadians ¶
func NewMQuaternionFromRadians(xPitch, yHead, zRoll float64) *MQuaternion
NewMQuaternionFromRadiansは、オイラー角(ラジアン)回転を表す四元数を返します。
func NewMQuaternionRotate ¶
func NewMQuaternionRotate(fromV, toV *MVec3) *MQuaternion
NewMQuaternionRotateはfromベクトルからtoベクトルまでの回転量を計算します。
func (*MQuaternion) Dot ¶
func (quat *MQuaternion) Dot(other *MQuaternion) float64
Dotは2つのクォータニオンの内積を返します。
func (*MQuaternion) GetW ¶
func (v *MQuaternion) GetW() float64
GetW returns the value of the W coordinate
func (*MQuaternion) GetX ¶
func (v *MQuaternion) GetX() float64
GetX returns the value of the X coordinate
func (*MQuaternion) GetXYZ ¶
func (v *MQuaternion) GetXYZ() *MVec3
func (*MQuaternion) GetY ¶
func (v *MQuaternion) GetY() float64
GetY returns the value of the Y coordinate
func (*MQuaternion) GetZ ¶
func (v *MQuaternion) GetZ() float64
GetZ returns the value of the Z coordinate
func (*MQuaternion) Inverse ¶
func (quat *MQuaternion) Inverse() *MQuaternion
Inverseは、クォータニオンを反転させます。
func (*MQuaternion) Inverted ¶
func (quat *MQuaternion) Inverted() *MQuaternion
Invertedは反転したクォータニオンを返します。
func (*MQuaternion) IsIdent ¶
func (quat *MQuaternion) IsIdent() bool
func (*MQuaternion) IsShortestRotation ¶
func (quat *MQuaternion) IsShortestRotation(other *MQuaternion) bool
IsShortestRotationは、a から b への回転が可能な限り最短の回転かどうかを返します。 (quatの向きから他の向きへの回転には2つの方向があります)
func (*MQuaternion) IsUnitQuat ¶
func (quat *MQuaternion) IsUnitQuat(tolerance float64) bool
IsUnitQuatは、クォータニオンが単位クォータニオンの許容範囲内にあるかどうかを返します。
func (*MQuaternion) Lerp ¶
func (q *MQuaternion) Lerp(other *MQuaternion, t float64) *MQuaternion
func (*MQuaternion) MMD ¶
func (v *MQuaternion) MMD() *MQuaternion
MMD MMD(MikuMikuDance)座標系に変換されたクォータニオンベクトルを返します
func (*MQuaternion) Mul ¶
func (q1 *MQuaternion) Mul(q2 *MQuaternion) *MQuaternion
Mulは、クォータニオンの積を返します。
func (*MQuaternion) MulShort ¶
func (q1 *MQuaternion) MulShort(q2 *MQuaternion) *MQuaternion
Mulは、クォータニオンの積を返します。
func (*MQuaternion) MulVec3 ¶
func (quat *MQuaternion) MulVec3(v *MVec3) *MVec3
MulVec3は、ベクトルvをクォータニオンで回転させた結果の新しいベクトルを返します。
func (*MQuaternion) Muled ¶
func (q1 *MQuaternion) Muled(q2 *MQuaternion) *MQuaternion
func (*MQuaternion) MuledScalar ¶
func (quat *MQuaternion) MuledScalar(factor float64) *MQuaternion
MuledScalarはクォータニオンにスカラーを掛け算します。
func (*MQuaternion) MuledShort ¶
func (q1 *MQuaternion) MuledShort(q2 *MQuaternion) *MQuaternion
func (*MQuaternion) NearEquals ¶
func (quat *MQuaternion) NearEquals(other *MQuaternion, epsilon float64) bool
NearEqualsは2つのクォータニオンがほぼ等しいかどうかを判定します。
func (*MQuaternion) Negated ¶
func (quat *MQuaternion) Negated() *MQuaternion
Negatedは反転したクォータニオンを返します。
func (*MQuaternion) Normalize ¶
func (quat *MQuaternion) Normalize() *MQuaternion
Normalizeは、単位四位数に正規化する。
func (*MQuaternion) Normalized ¶
func (quat *MQuaternion) Normalized() *MQuaternion
Normalizedは、単位を4進数に正規化したコピーを返す。
func (*MQuaternion) SeparateByAxis ¶
func (quat *MQuaternion) SeparateByAxis(globalAxis *MVec3) (*MQuaternion, *MQuaternion, *MQuaternion)
SeparateByAxisは、グローバル軸に基づいてクォータニオンを3つのクォータニオン(x, y, z)に分割します。
func (*MQuaternion) SeparateTwistByAxis ¶
func (quat *MQuaternion) SeparateTwistByAxis(globalAxis *MVec3) (*MQuaternion, *MQuaternion)
SeparateByAxisは、グローバル軸に基づいてクォータニオンを2つのクォータニオン(捩りとそれ以外)に分割します。
func (*MQuaternion) SetShortestRotation ¶
func (quat *MQuaternion) SetShortestRotation(other *MQuaternion) *MQuaternion
SetShortestRotationは、クォータニオンが quat から other の方向への最短回転を表していない場合、そのクォータニオンを否定します。 (quatの向きからotherの向きへの回転には2つの方向があります)
func (*MQuaternion) SetW ¶
func (v *MQuaternion) SetW(w float64)
SetW sets the value of the W coordinate
func (*MQuaternion) SetX ¶
func (v *MQuaternion) SetX(x float64)
SetX sets the value of the X coordinate
func (*MQuaternion) SetXYZ ¶
func (v *MQuaternion) SetXYZ(vec3 *MVec3)
func (*MQuaternion) SetY ¶
func (v *MQuaternion) SetY(y float64)
SetY sets the value of the Y coordinate
func (*MQuaternion) SetZ ¶
func (v *MQuaternion) SetZ(z float64)
SetZ sets the value of the Z coordinate
func (*MQuaternion) Slerp ¶
func (a *MQuaternion) Slerp(b *MQuaternion, t float64) *MQuaternion
Slerpはt (0,1)におけるaとbの間の球面線形補間クォータニオンを返します。 See http://en.wikipedia.org/wiki/Slerp
func (*MQuaternion) ToAxisAngle ¶
func (quat *MQuaternion) ToAxisAngle() (*MVec3, float64)
ToAxisAngleは、クォータニオンを軸と角度に変換します。
func (*MQuaternion) ToDegree ¶
func (quat *MQuaternion) ToDegree() float64
ToDegreeは、クォータニオンを度に変換します。
func (*MQuaternion) ToDegrees ¶
func (quat *MQuaternion) ToDegrees() *MVec3
ToDegreesは、クォータニオンのオイラー角(度)回転を返します。
func (*MQuaternion) ToFixedAxisRotation ¶
func (quat *MQuaternion) ToFixedAxisRotation(fixedAxis *MVec3) *MQuaternion
ToFixedAxisRotationは軸制限されたクォータニオンの回転を計算します。
func (*MQuaternion) ToMMDDegrees ¶
func (quat *MQuaternion) ToMMDDegrees() *MVec3
ToDegreesは、クォータニオンのオイラー角(度)回転を返します。
func (*MQuaternion) ToRadian ¶
func (quat *MQuaternion) ToRadian() float64
ToRadianは、クォータニオンをラジアンに変換します。
func (*MQuaternion) ToRadians ¶
func (v *MQuaternion) ToRadians() *MVec3
ToRadiansは、クォータニオンを三軸のオイラー角(ラジアン)回転を返します。
func (*MQuaternion) ToRadiansWithGimbal ¶
func (v *MQuaternion) ToRadiansWithGimbal(axisIndex int) (*MVec3, bool)
ToRadiansWithGimbalは、クォータニオンを三軸のオイラー角(ラジアン)回転を返します。 ジンバルロックが発生しているか否かのフラグも返します
func (*MQuaternion) ToSignedDegree ¶
func (quat *MQuaternion) ToSignedDegree() float64
ToSignedDegreeは、符号付き角度に変換します。
func (*MQuaternion) ToSignedRadian ¶
func (quat *MQuaternion) ToSignedRadian() float64
ToSignedRadianは、符号付きラジアンに変換します。
func (*MQuaternion) ToTheta ¶
func (quat *MQuaternion) ToTheta(v *MQuaternion) float64
ToThetaは、自分ともうひとつの値vとのtheta(変位量)を返します。
type MRect ¶
func (*MRect) ContainsPoint ¶
ContainsPoint returns if a point is contained within the rectangle.
type MRotation ¶
type MRotation struct {
// contains filtered or unexported fields
}
func NewRotation ¶
func NewRotation() *MRotation
func NewRotationFromDegrees ¶
NewRotationFromDegrees は度数角度からで回転を表すモデルを生成します。
func NewRotationFromQuaternion ¶
func NewRotationFromQuaternion(vQuaternion *MQuaternion) *MRotation
NewRotationFromQuaternion はクォータニオンからで回転を表すモデルを生成します。
func NewRotationFromRadians ¶
NewRotationFromRadians はラジアン角度からで回転を表すモデルを生成します。
func (*MRotation) GetDegrees ¶
func (*MRotation) GetDegreesMMD ¶
func (*MRotation) GetQuaternion ¶
func (m *MRotation) GetQuaternion() *MQuaternion
func (*MRotation) GetRadians ¶
func (*MRotation) GetRadiansMMD ¶
func (*MRotation) SetDegrees ¶
func (*MRotation) SetQuaternion ¶
func (m *MRotation) SetQuaternion(v *MQuaternion)
func (*MRotation) SetRadians ¶
type MVec2 ¶
func (*MVec2) AddedScalar ¶
func (*MVec2) ClampIfVerySmall ¶
ClampIfVerySmall ベクトルの各要素がとても小さい場合、ゼロを設定する
func (*MVec2) DivedScalar ¶
DivedScalar ベクトルの各要素をスカラーで除算した結果を返します
func (*MVec2) GreaterThan ¶
GreaterThan ベクトルが他のベクトルより大きいかどうかをチェックします (>)
func (*MVec2) GreaterThanOrEquals ¶
GreaterThanOrEqual ベクトルが他のベクトル以上かどうかをチェックします (>=)
func (*MVec2) LessThanOrEquals ¶
LessThanOrEqual ベクトルが他のベクトル以下かどうかをチェックします (<=)
func (*MVec2) MuledScalar ¶
func (*MVec2) NearEquals ¶
NearEquals ベクトルが他のベクトルとほぼ等しいかどうかをチェックします
func (*MVec2) Rotate90DegLeft ¶
Rotate90DegLeft ベクトルを90度左回転します
func (*MVec2) Rotate90DegRight ¶
Rotate90DegRight ベクトルを90度右回転します
func (*MVec2) RotateAroundPoint ¶
RotateAroundPoint ベクトルを指定された点を中心に回転します
func (*MVec2) SubedScalar ¶
type MVec3 ¶
func CalculateBoundingBox ¶
直方体の境界を計算する関数
func GetVertexLocalPositions ¶
func GetVertexLocalPositions(vertexPositions []*MVec3, startBonePosition *MVec3, endBonePosition *MVec3) []*MVec3
ボーンから見た頂点ローカル位置を求める vertexPositions: グローバル頂点位置 startBonePosition: 親ボーン位置 endBonePosition: 子ボーン位置
func IntersectLinePlane ¶
2点間のベクトルと、点Pを含むカメラ平面と平行な面、との交点を計算
func (*MVec3) AddedScalar ¶
func (*MVec3) ClampIfVerySmall ¶
ClampIfVerySmall ベクトルの各要素がとても小さい場合、ゼロを設定する
func (*MVec3) DivedScalar ¶
DivedScalar ベクトルの各要素をスカラーで除算した結果を返します
func (*MVec3) GreaterThan ¶
GreaterThan ベクトルが他のベクトルより大きいかどうかをチェックします (>)
func (*MVec3) GreaterThanOrEquals ¶
GreaterThanOrEqual ベクトルが他のベクトル以上かどうかをチェックします (>=)
func (*MVec3) Interpolate ¶
Interpolate ベクトルの線形補間を行います
func (*MVec3) IsPointInsideBox ¶
点が直方体内にあるかどうかを判定する関数
func (*MVec3) LessThanOrEquals ¶
LessThanOrEqual ベクトルが他のベクトル以下かどうかをチェックします (<=)
func (*MVec3) MuledScalar ¶
func (*MVec3) NearEquals ¶
NearEquals ベクトルが他のベクトルとほぼ等しいかどうかをチェックします
func (*MVec3) SubedScalar ¶
func (*MVec3) ToLocalMatrix4x4 ¶
ToLocalMatrix4x4 自身をローカル軸とした場合の回転行列を取得します
func (*MVec3) ToScaleMat4 ¶
func (*MVec3) Vec3Diff ¶
func (a *MVec3) Vec3Diff(b *MVec3) *MQuaternion
Vec3Diffは、2つのベクトル間の回転四元数を返します。
type MVec4 ¶
func (*MVec4) AddedScalar ¶
func (*MVec4) ClampIfVerySmall ¶
ClampIfVerySmall ベクトルの各要素がとても小さい場合、ゼロを設定する
func (*MVec4) DivedScalar ¶
DivedScalar ベクトルの各要素をスカラーで除算した結果を返します
func (*MVec4) DividedByW ¶
DividedByW returns a copy of the vector with the first three components (XYZ) divided by the last one (W).
func (*MVec4) GreaterThan ¶
GreaterThan ベクトルが他のベクトルより大きいかどうかをチェックします (>)
func (*MVec4) GreaterThanOrEquals ¶
GreaterThanOrEqual ベクトルが他のベクトル以上かどうかをチェックします (>=)
func (*MVec4) Interpolate ¶
Interpolate ベクトルの線形補間を行います
func (*MVec4) LessThanOrEquals ¶
LessThanOrEqual ベクトルが他のベクトル以下かどうかをチェックします (<=)
func (*MVec4) MuledScalar ¶
func (*MVec4) NearEquals ¶
NearEquals ベクトルが他のベクトルとほぼ等しいかどうかをチェックします
func (*MVec4) SubedScalar ¶
func (*MVec4) Vec3DividedByW ¶
Vec3DividedByW returns a vec3.T version of the vector by dividing the first three vector components (XYZ) by the last one (W).