## Point2d Class

2D point with x,y as properties

### Methods

Name Description
constructor(x: number = 0, y: number = 0): Constructor for Point2d
addForwardLeft(tangentFraction: number, leftFraction: number, vector: Vector2d, result?: Point2d): Starting at this point, move along vector by tangentFraction of its length, and then
clone(result?: Point2d): Return a new Point2d with x,y coordinates from this.
crossProductToPoints(target1: Readonly<WritableXAndY>, target2: Readonly<WritableXAndY>): number Returns the (scalar) cross product of vector from this to targetA and vector from this to targetB
dotVectorsToTargets(targetA: Readonly<WritableXAndY>, targetB: Readonly<WritableXAndY>): number Return the dot product of vector from this to targetA and vector from this to targetB
forwardLeftInterpolate(tangentFraction: number, leftFraction: number, point: Readonly<WritableXAndY>): Interpolate at tangentFraction between this instance and point, and then Move by leftFraction
fractionOfProjectionToLine(startPoint: Point2d, endPoint: Point2d, defaultFraction: number = 0): number Return the fractional coordinate of the projection of this instance x,y onto the
interpolate(fraction: number, other: Readonly<WritableXAndY>, result?: Point2d): Return a point interpolated between this point and the right param.
interpolateXY(fractionX: number, fractionY: number, other: Readonly<WritableXAndY>, result?: Point2d): Return a point with independent x,y fractional interpolation.
minus(vector: Readonly<WritableXAndY>, result?: Point2d): Return this point minus vector
plus(vector: Readonly<WritableXAndY>, result?: Point2d): Return point plus vector
plus2Scaled(vectorA: Readonly<WritableXAndY>, scalarA: number, vectorB: Readonly<WritableXAndY>, scalarB: number, result?: Point2d): Return point + vectorA * scalarA + vectorB * scalarB
plus3Scaled(vectorA: Readonly<WritableXAndY>, scalarA: number, vectorB: Readonly<WritableXAndY>, scalarB: number, vectorC: Readonly<WritableXAndY>, scalarC: number, result?: Point2d): Return point + vectorA * scalarA + vectorB * scalarB + vectorC * scalarC
plusScaled(vector: Readonly<WritableXAndY>, scaleFactor: number, result?: Point2d): Return point + vector * scalar
plusXY(dx: number = 0, dy: number = 0, result?: Point2d): Return point plus vector
create(x: number = 0, y: number = 0, result?: Point2d): Static Return a point (newly created unless result provided) with given x,y coordinates
createFrom(xy: undefined | Readonly<WritableXAndY>, result?: Point2d): Static Create (or optionally reuse) a Point2d from another object with fields x and y
createZero(result?: Point2d): Static Create a Point2d with both coordinates zero.
fromJSON(json?: XYProps): Static Set x and y from a JSON input such as [1,2] or {x:1, y:2}

### Inherited methods

Name Inherited from Description
at(index: number): number XY Return the x,y component corresponding to 0,1
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
indexOfMaxAbs(): number XY Return the index (0,1) of the x,y component with largest absolute value
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>, distanceTol: number = Geometry.smallMetricDistance): 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.
setAt(index: number, value: number): void XY Set value at index 0 or 1
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 input such as [1,2] or {x:1, y:2}
setZero(): void XY Set both x and y to zero
toJSON(): XY Return a json array [x,y]
toJSONXY(): XY Return a json object {x: 1, y:2}
unitVectorTo(other: Readonly<WritableXAndY>, result?: Vector2d): undefined | Vector2d XY Return a unit vector from this point to other
vectorTo(other: Readonly<WritableXAndY>, result?: 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: 04 December, 2023