Vector
About
Vectors are used to represent all sorts of stuff from motion to points in space. U can read more about vectors here
Types
// represents 2D vectortype Vec2D = { x: number; y: number;};
// represents 3D vectortype Vec3D = { x: number; y: number; z: number;};
// represents u guessed it 4D vectorexport type Vec4D = { x: number; y: number; z: number; w: number;};
// More user friendly than Vec3D, becausue it's more clear to pass array as an argument than to pass an object.type Vec3DTuple = [number, number, number];
// used to represent axis of Rotationtype Rotation3D = { xAxis: number; yAxis: number; zAxis: number;};
// More user friendly than Rotation3D, becausue it's more clear to pass array as an argument than to pass an object.type Rotation3DTuple = [number, number, number];
// They are not vector by thyself, but they are heavily used with em so i thought i should put them heretype Line3D = [Vec3D, Vec3D];Methods
// Returns zero vector(0, 0, 0)Vector.zero();// adds 2 vectorsVector.add(vec1: Vec3D, vec2: Vec3D): Vec3D// subtract 2 vectorsVector.subtract(vec1: Vec3D, vec2: Vec3D): Vec3D// multiply 2 vectorsVector.multiply(vec: Vec3D, num: number): Vec3D// divides 2 vectors// can throw division by 0 errorVector.divide(vec: Vec3D, num: number): Vec3D// returns dotProduct od 2 vectorsVector.dotP(vec1: Vec3D, vec2: Vec3D): number// return length of vectorVector.length(vec: Vec3D): number// returns normalized vector(with length of 1)Vector.normalize(vec: Vec3D): Vec3D// returns cross product of 2 vectorsVector.crossP(vec1: Vec3D, vec2: Vec3D): Vec3D// resizes vector to desired widthVector.resize(vec: Vec3D, magnitiude: number)// Returns vector create from Vec3DTupleVector.fromArray(arr: Vec3DTuple)