## Point2d Class

2D point with `x`,`y` as properties

### Methods

Name Description
constructor(x: number0, y: number0): 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: number0): 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: number0, dy: number0, result?: Point2d): Return point plus vector
scaleInPlace(scale: number): void Multiply the x, y parts by scale.
create(x: number0, y: number0, result?: Point2d): Static Return a point (newly created unless result provided) with given x,y coordinates
createFrom(xy: 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: numberGeometry.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: number0, y: number0): 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
isZero Accessor ReadOnly boolean XY Return true if the x and y components are all exactly zero
x number XY x component
y number XY y component

### Defined in

Last Updated: 08 August, 2024