Vector2d Class

2D vector with x,y as properties

Extends

Implements

Methods

Name Description
constructor(x: number = 0, y: number = 0): Vector2d    
angleTo(vectorB: Readonly<WritableXAndY>): Angle return the (signed) angle from this to vectorB.  
clone(result?: Vector2d): Vector2d Return a new Vector2d with the same x,y  
crossProduct(vectorB: Readonly<WritableXAndY>): number vector cross product {this CROSS vectorB}  
dotProduct(vectorB: Readonly<WritableXAndY>): number return the dot product of this with vectorB  
dotProductStartEnd(pointA: Readonly<WritableXAndY>, pointB: Readonly<WritableXAndY>): number dot product with vector from pointA to pointB  
fractionOfProjectionToVector(target: Vector2d, defaultFraction?: number): number return the fractional projection of spaceVector onto this  
interpolate(fraction: number, right: Vector2d, result?: Vector2d): Vector2d return the interpolation {this + fraction * (right - this)}  
isParallelTo(other: Vector2d, oppositeIsParallel: boolean = false): boolean Test if this and other area parallel, with angle tolerance Geometry.smallAngleRadiansSquared.  
isPerpendicularTo(other: Vector2d): boolean Returns true if this vector is perpendicular to other.  
minus(vector: Readonly<WritableXAndY>, result?: Vector2d): Vector2d return {this - vector}.  
negate(result?: Vector2d): Vector2d Return a new vector with components negated from this instance.  
normalize(result?: Vector2d): undefined | Vector2d Return a unit vector in direction of this instance (undefined if this instance has near zero length)  
plus(vector: Readonly<WritableXAndY>, result?: Vector2d): Vector2d return {this + vector}.  
plus2Scaled(vectorA: Readonly<WritableXAndY>, scalarA: number, vectorB: Readonly<WritableXAndY>, scalarB: number, result?: Vector2d): Vector2d Return {point + vectorA * scalarA + vectorB * scalarB}  
plus3Scaled(vectorA: Readonly<WritableXAndY>, scalarA: number, vectorB: Readonly<WritableXAndY>, scalarB: number, vectorC: Readonly<WritableXAndY>, scalarC: number, result?: Vector2d): Vector2d Return {this + vectorA * scalarA + vectorB * scalarB + vectorC * scalarC}  
plusScaled(vector: Readonly<WritableXAndY>, scaleFactor: number, result?: Vector2d): Vector2d Return {point + vector * scalar}  
rotate90CCWXY(result?: Vector2d): Vector2d Return a vector same length as this but rotated 90 degrees counter clockwise  
rotate90CWXY(result?: Vector2d): Vector2d Return a vector same length as this but rotated 90 degrees clockwise  
rotateXY(angle: Angle, result?: Vector2d): Vector2d return a new Vector2d rotated CCW by given angle  
safeDivideOrNull(denominator: number, result?: Vector2d): undefined | Vector2d Return a (new or optionally reused) vector which is this divided by denominator  
scale(scale: number, result?: Vector2d): Vector2d Return {this * scale}  
scaleToLength(length: number, result?: Vector2d): undefined | Vector2d return a vector parallel to this but with specified length  
unitPerpendicularXY(result?: Vector2d): Vector2d Return a unit vector perpendicular to this instance.  
create(x: number = 0, y: number = 0, result?: Vector2d): Vector2d Static Return a new Vector2d with given x and y  
createFrom(data: Float64Array | Readonly<WritableXAndY>, result?: Vector2d): Vector2d Static copy contents from another Point3d, Point2d, Vector2d, or Vector3d, or leading entries of Float64Array  
createOffsetBisector(unitPerpA: Vector2d, unitPerpB: Vector2d, offset: number): undefined | Vector2d Static Return a vector that bisects the angle between two normals and extends to the intersection of two offset lines  
createPolar(r: number, theta: Angle): Vector2d Static Return a new Vector2d from polar coordinates for radius and Angle from x axis  
createStartEnd(point0: Readonly<WritableXAndY>, point1: Readonly<WritableXAndY>, result?: Vector2d): Vector2d Static Return a new Vector2d extending from point0 to point1  
createZero(result?: Vector2d): Vector2d Static Return a Vector2d with components 0,0  
fromJSON(json?: XYProps): Vector2d Static Return a new Vector2d from json structured as [1,2] or {x:1,y:2}  
unitX(scale: number = 1): Vector2d Static Return a (new) Vector2d with components 1,0  
unitY(scale: number = 1): Vector2d Static Return a (new) Vector2d with components 0,1  

Inherited methods

Name Inherited from Description
distance(other: Readonly<WritableXAndY>): number XY Return the distance from this point to other
distanceSquared(other: Readonly<WritableXAndY>): number XY Return squared distance from this point to other
freeze(): Readonly<Vector2d> XY Freeze this instance so it is read-only
isAlmostEqual(other: Readonly<WritableXAndY>, tol?: number): boolean XY Returns true if this and other have equal x,y parts within Geometry.smallMetricDistance.
isAlmostEqualMetric(other: Readonly<WritableXAndY>): boolean XY returns true if x,y match other within metric tolerance
isAlmostEqualXY(x: number, y: number, tol?: number): boolean XY Returns true if this and other have equal x,y parts within Geometry.smallMetricDistance.
isExactEqual(other: Readonly<WritableXAndY>): boolean XY returns true if the x,y components are exactly equal.
magnitude(): number XY Return the magnitude of the vector
magnitudeSquared(): number XY Return the squared magnitude of the vector.
maxAbs(): number XY Return the largest absolute value of any component
maxDiff(other: Readonly<WritableXAndY>): number XY Return the largest absolute distance between corresponding components
set(x: number = 0, y: number = 0): void XY Set both x and y.
setFrom(other?: Readonly<WritableXAndY>): void XY Set both x and y from other.
setFromJSON(json?: XYProps): void XY Set x and y from a JSON source such as [1,2] or {x:1, y:2}
setZero(): void XY Set both x and y to zero
toJSON(): XYProps XY return a json array [x,y]
toJSONXY(): XYProps XY return a json object {x: 1, y:2}
unitVectorTo(target: Readonly<WritableXAndY>, result?: Vector2d): undefined | Vector2d XY Return a unit vector from this point to other
vectorTo(other: Readonly<WritableXAndY>, result?: Vector2d): Vector2d XY Return a (full length) vector from this point to other
crossProductToPoints(origin: Readonly<WritableXAndY>, targetA: Readonly<WritableXAndY>, targetB: Readonly<WritableXAndY>): number Static XY cross product of vectors from origin to targets

Inherited properties

Name Type Inherited from Description
isAlmostZero Accessor ReadOnly boolean XY returns true if the x,y components are both small by metric metric tolerance
x number XY x component
y number XY y component

Defined in

Last Updated: 11 June, 2024