ts-useful
Version:
Functions for animation, color transitions, ecliptic, bezier, decasteljau, curves, three dimensional curves, smooth scrolling, random range, randomItem, mobius index, vectors, physics vectors, and easing.
117 lines (116 loc) • 3.09 kB
TypeScript
import { Vector } from '../vector';
import { coordinate, minMax } from '../types';
import { IVector, IPhysicsVector } from '../interfaces';
import { PhysicsVectorOptions } from '../types/physicsVectorOptions';
import { dragOptions } from '../types/dragOptions';
export declare abstract class PhysicsVect extends Vector implements IPhysicsVector {
gravity: number;
mass: number;
density: number;
restitution: number;
acceleration: IVector;
velocity: IVector;
distanceClamp: minMax;
static defaultOptions: {
gravity: number;
mass: number;
density: number;
restitution: number;
distanceClamp: minMax;
};
/**
*
* @param m number
* @param d number
* @returns
*/
protected volume: (m: number, d: number) => number;
/**
*
* @param params PhysicsVectorOptions
*/
constructor(params?: PhysicsVectorOptions);
/**
*
* @param primary IPhysicsVector
* @param secondary IPhysicsVector
* @returns Vector
*/
static attract: (primary: IPhysicsVector, secondary: IPhysicsVector) => Vector;
/**
*
* @param vector IPhysicsVector
* @param force IVector
* @returns IPhysicsVector
*/
static applyForce: (vector: IPhysicsVector, force: IVector) => IPhysicsVector;
/**
*
* @param vector IPhysicsVector
* @param dragOptions dragOptions
* @returns IPhysicsVector
*/
static drag: (vector: IPhysicsVector, dragOptions: dragOptions) => IPhysicsVector;
/**
*
* @param vector IPhysicsVector
* @param gravity number
* @param axis 'x' | 'y' default 'y'
* @returns IPhysicsVector
*/
static addGravity: (vector: IPhysicsVector, gravity: number, axis?: 'x' | 'y') => IPhysicsVector;
/**
*
* @param vector IPhysicsVector
* @returns IPhysicsVector
*/
static updateGravity: (vector: IPhysicsVector) => IPhysicsVector;
/**
*
* @param vector
* @param params
*/
static bindToArea: (vector: IPhysicsVector, params: {
min: coordinate;
max: coordinate;
}) => void;
/**
*
* @param gravity number
* @param axis 'x' | 'y" optional
* @returns this
*/
addGravity: (gravity: number, axis?: 'x' | 'y') => this;
/**
*
* @param target IPhysicsVector
* @returns this
*/
attract: (target: IPhysicsVector) => this;
/**
*
* @param force IVector
* @returns this
*/
applyForce: (force: IVector) => this;
/**
*
* @param dragOptions dragOptions
* @returns this
*/
drag: (dragOptions: dragOptions) => this;
/**
*
* @returns this
*/
updateGravity: () => this;
/**
*
* @param params { min: coordinate, max: coordinate }
* @returns void
*/
bindToArea: (params: {
min: coordinate;
max: coordinate;
}) => void;
}