/** * A quaternion is a 4-component analog to complex numbers. Useful in a handful of cases * like the effecient and safe rotation of a 3-dimensional vector * * @since 1.0.0 */ import * as Eq_ from 'fp-ts/Eq'; import * as IO from 'fp-ts/IO'; import * as Mg from 'fp-ts/Magma'; import * as Mn from 'fp-ts/Monoid'; import * as Sg from 'fp-ts/Semigroup'; import * as Sh from 'fp-ts/Show'; import * as Auto from './Automorphism'; import * as Iso from './Iso'; import * as TC from './typeclasses'; import * as V from './Vector'; import * as Inf from './infix'; /** * @since 1.0.0 * @category Model */ export interface Quaternion { a: number; b: number; c: number; d: number; } /** * @since 1.0.0 * @category Constructors */ export declare const zero: Quaternion; /** * @since 1.0.0 * @category Constructors */ export declare const one: Quaternion; /** * @since 1.0.0 * @category Constructors */ export declare const scalar: (a: number) => Quaternion; /** * @since 1.0.0 * @category Constructors */ export declare const i: Quaternion; /** * @since 1.0.0 * @category Constructors */ export declare const j: Quaternion; /** * @since 1.0.0 * @category Constructors */ export declare const k: Quaternion; /** * @since 1.0.0 * @category Constructors */ export declare const of: (a: number, b: number, c: number, d: number) => Quaternion; /** * @since 1.0.0 * @category Constructors */ export declare const fromVector4: (v: V.Vec<4, number>) => Quaternion; /** * @since 1.0.0 * @category Constructors */ export declare const fromVector3: (v: V.Vec<3, number>) => Quaternion; /** * @since 1.0.0 * @category Constructors */ export declare const randQuaternion: (min: number, max: number) => IO.IO; /** * @since 1.0.0 * @category Instances */ export declare const Eq: Eq_.Eq; /** * @since 1.0.0 * @category Instances */ export declare const MagmaSub: Mg.Magma; /** * @since 1.0.0 * @category Instances */ export declare const SemigroupSum: Sg.Semigroup; /** * @since 1.0.0 * @category Instances */ export declare const SemigroupProduct: Sg.Semigroup; /** * @since 1.0.0 * @category Instances */ export declare const MonoidSum: Mn.Monoid; /** * @since 1.0.0 * @category Instances */ export declare const MonoidProduct: Mn.Monoid; /** * @since 1.0.0 * @category Instance Operations */ export declare const recip: (q: Quaternion) => Quaternion; /** * @since 1.0.0 * @category Instances */ export declare const DivisionRing: TC.DivisionRing; /** * @since 1.0.0 * @category Instances */ export declare const Show: Sh.Show; /** * @since 1.0.0 * @category Instances */ export declare const AdditiveAbelianGroup: TC.AbelianGroup; /** * @since 1.0.0 * @category Instances */ export declare const Bimodule: TC.Bimodule; /** * @since 1.0.0 * @category Instance Operations */ export declare const rotateVector: (axis: V.Vec<3, number>, theta: number) => (v: V.Vec<3, number>) => V.Vec<3, number>; /** * @since 1.0.0 * @category Instances */ export declare const getRotationAutomorphism: (axis: V.Vec<3, number>, theta: number) => Auto.Automorphism>; /** * @since 1.0.0 * @category Infix */ export declare const _: (a: Quaternion, s: Inf.DivisionRingSymbol, b: Quaternion) => Quaternion; /** * @since 1.0.0 * @category Infix */ export declare const $_: (s: Inf.DivisionRingSymbol, x: Quaternion, y: Quaternion) => Quaternion; /** * @since 1.0.0 * @category Infix */ export declare const _$: (a: Quaternion, b: Quaternion, s: Inf.DivisionRingSymbol) => Quaternion; /** * @since 1.0.0 * @category Destructors */ export declare const toVector4: (q: Quaternion) => V.Vec<4, number>; /** * **Note:** Disregards the real part of a quaternion * * @since 1.0.0 * @category Destructors */ export declare const toVector3: (q: Quaternion) => V.Vec<3, number>; /** * @since 1.0.0 * @category Destructors */ export declare const norm: (q: Quaternion) => number; /** * @since 1.0.0 * @category Destructors */ export declare const IsoVector4: Iso.Iso>; /** * @since 1.0.0 * @category Quaternion Ops */ export declare const asUnit: (q: Quaternion) => Quaternion; /** * @since 1.0.0 * @category Quaternion Ops */ export declare const getRotationQuaternion: (axis: V.Vec<3, number>) => (theta: number) => Quaternion; /** * @since 1.0.0 * @category Quaternion Ops */ export declare const conj: (q: Quaternion) => Quaternion; /** * @since 1.0.0 * @category Aliases */ export declare const add: (x: Quaternion, y: Quaternion) => Quaternion; /** * @since 1.0.0 * @category Aliases */ export declare const sub: (x: Quaternion, y: Quaternion) => Quaternion; /** * @since 1.0.0 * @category Aliases */ export declare const mul: (x: Quaternion, y: Quaternion) => Quaternion; /** * @since 1.0.0 * @category Aliases */ export declare const div: (x: Quaternion, y: Quaternion) => Quaternion; //# sourceMappingURL=quaternion.d.ts.map