tsmathlib
Version:
Typescript Version Math/Physics/CG Library
77 lines (61 loc) • 1.51 kB
text/typescript
/*
* @Author: Xu.Wang
* @Date: 2020-04-05 20:58:19
* @Last Modified by: Xu.Wang
* @Last Modified time: 2020-04-05 23:42:19
*/
import { Vector } from './vector'
export class Vector2 extends Vector {
constructor(e1: number, e2: number) {
super(2, new Array<number>(e1, e2))
}
x() {
return this.data()[0]
}
y() {
return this.data()[1]
}
iset(v2: Vector2) {
this.data()[0] = v2.x()
this.data()[1] = v2.y()
}
set(v2: Vector2): boolean {
return super.set(new Vector(3, v2.data()))
}
add(v2: any): Vector2 {
let addv = super.add(v2)
return new Vector2(addv.data()[0], addv.data()[1])
}
sub(v2: any): Vector2 {
let subv = super.sub(v2)
return new Vector2(subv.data()[0], subv.data()[1])
}
mul(v2: any): Vector2 {
let mulv = super.mul(v2)
return new Vector2(mulv.data()[0], mulv.data()[1])
}
div(v2: any): Vector2 {
let divv = super.div(v2)
return new Vector2(divv.data()[0], divv.data()[1])
}
rdiv(v2: any): Vector2 {
let divv = super.rdiv(v2)
return new Vector2(divv.data()[0], divv.data()[1])
}
dot(v2: Vector2): number {
return super.dot(new Vector(2, v2.data()))
}
cross(v2: Vector2): number {
return this.x() * v2.y() - this.y() * v2.x()
}
normalize() {
super.normalize()
}
normalized(): Vector2 {
let norm = super.normalized()
return new Vector2(norm.data()[0], norm.data()[1])
}
tangential(): Vector2 {
return new Vector2(this.y(), -this.x())
}
}