Math.Geometry


Point2D Module

Types

Type Description

ListTransform

Transform

Functions and values

Function or value Description

along axis distance

Full Usage: along axis distance

Parameters:
Returns: Point2D<'Units, 'Coordinates>

Construct a point along an axis at a particular distance from the axis' origin point. Positive and negative distances will be interpreted relative to the direction of the axis.

axis : Axis2D<'Units, 'Coordinates>
distance : Quantity<'Units>
Returns: Point2D<'Units, 'Coordinates>

centimeters x y

Full Usage: centimeters x y

Parameters:
    x : float
    y : float

Returns: Point2D<Meters, 'Coordinates>
x : float
y : float
Returns: Point2D<Meters, 'Coordinates>

centroid p0 rest

Full Usage: centroid p0 rest

Parameters:
    p0 : Point2D<'Units, 'Coordinates>
    rest : Point2D<'Units, 'Coordinates> list

Returns: Point2D<'Units, 'Coordinates>

Find the centroid (average) of one or more points, by passing the first point and then all remaining points. This allows this function to return a `Point2d` instead of a `Maybe Point2d`. You would generally use `centroid` within a `case` expression. Alternatively, you can use [`centroidN`](#centroidN) instead.

p0 : Point2D<'Units, 'Coordinates>
rest : Point2D<'Units, 'Coordinates> list
Returns: Point2D<'Units, 'Coordinates>

centroid3 p1 p2 p3

Full Usage: centroid3 p1 p2 p3

Parameters:
    p1 : Point2D<'Units, 'Coordinates>
    p2 : Point2D<'Units, 'Coordinates>
    p3 : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'Coordinates>

Find the centroid of three points `Point2D.centroid3d p1 p2 p3` is equivalent to `Point2d.centroid p1 [ p2, p3 ]` but is more efficient.

p1 : Point2D<'Units, 'Coordinates>
p2 : Point2D<'Units, 'Coordinates>
p3 : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

centroidN points

Full Usage: centroidN points

Parameters:
    points : Point2D<'Units, 'Coordinates> list

Returns: Point2D<'Units, 'Coordinates> option

Find the centroid of a list of _N_ points. If the list is empty, returns `Nothing`. If you know you have at least one point, you can use [`centroid`](#centroid) instead to avoid the `Option`.

points : Point2D<'Units, 'Coordinates> list
Returns: Point2D<'Units, 'Coordinates> option

centroidOf toPoint first rest

Full Usage: centroidOf toPoint first rest

Parameters:
    toPoint : 'a -> Point2D<'Units, 'Coordinates>
    first : 'a
    rest : 'a list

Returns: Point2D<'Units, 'Coordinates>

Like `centroid`, but lets you work with any kind of data as long as a point can be extracted/constructed from it. For example, to get the centroid of a bunch of vertices.

toPoint : 'a -> Point2D<'Units, 'Coordinates>
first : 'a
rest : 'a list
Returns: Point2D<'Units, 'Coordinates>

circumcenter p1 p2 p3

Full Usage: circumcenter p1 p2 p3

Parameters:
    p1 : Point2D<'Units, 'Coordinates>
    p2 : Point2D<'Units, 'Coordinates>
    p3 : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'c> option
p1 : Point2D<'Units, 'Coordinates>
p2 : Point2D<'Units, 'Coordinates>
p3 : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'c> option

coordinates p

Full Usage: coordinates p

Parameters:
    p : Point2D<'Units, 'Coordinates>

Returns: Quantity<'Units> * Quantity<'Units>

Get the X and Y coordinates of a point as a tuple. Point2d.coordinates (Point2d.meters 2 3)

p : Point2D<'Units, 'Coordinates>
Returns: Quantity<'Units> * Quantity<'Units>

coordinatesIn frame p

Full Usage: coordinatesIn frame p

Parameters:
    frame : Frame2D<'Units, 'GlobalCoordinates, 'LocalCoordinates>
    p : Point2D<'Units, 'GlobalCoordinates>

Returns: Quantity<'Units> * Quantity<'Units>

Get the X and Y coordinates of a point relative to a given frame, as a tuple; these are the coordinates the point would have as viewed by an observer in that frame.

frame : Frame2D<'Units, 'GlobalCoordinates, 'LocalCoordinates>
p : Point2D<'Units, 'GlobalCoordinates>
Returns: Quantity<'Units> * Quantity<'Units>

direction point

Full Usage: direction point

Parameters:
    point : Point2D<'Units, 'Coordinates>

Returns: Direction2D<'Coordinates> option

Get the direction the a point is facing.

point : Point2D<'Units, 'Coordinates>
Returns: Direction2D<'Coordinates> option

distanceSquaredTo p1 p2

Full Usage: distanceSquaredTo p1 p2

Parameters:
    p1 : Point2D<'Units, 'Coordinates>
    p2 : Point2D<'Units, 'Coordinates>

Returns: Quantity<Squared<'Units>>

Find the squared distance from the first point to the second.

p1 : Point2D<'Units, 'Coordinates>
p2 : Point2D<'Units, 'Coordinates>
Returns: Quantity<Squared<'Units>>

distanceTo p1 p2

Full Usage: distanceTo p1 p2

Parameters:
    p1 : Point2D<'Units, 'Coordinates>
    p2 : Point2D<'Units, 'Coordinates>

Returns: Quantity<'Units>

Find the distance from the first point to the second.

p1 : Point2D<'Units, 'Coordinates>
p2 : Point2D<'Units, 'Coordinates>
Returns: Quantity<'Units>

dividedBy rhs lhs

Full Usage: dividedBy rhs lhs

Parameters:
    rhs : float
    lhs : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'Coordinates>
rhs : float
lhs : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

equalWithin eps p1 p2

Full Usage: equalWithin eps p1 p2

Parameters:
Returns: bool

Compare two points within a tolerance. Returns true if the distance between the two given points is less than the given tolerance.

eps : Quantity<'Units>
p1 : Point2D<'Units, 'Coordinates>
p2 : Point2D<'Units, 'Coordinates>
Returns: bool

feet x y

Full Usage: feet x y

Parameters:
    x : float
    y : float

Returns: Point2D<Meters, 'Coordinates>
x : float
y : float
Returns: Point2D<Meters, 'Coordinates>

fromList list

Full Usage: fromList list

Parameters:
    list : float list

Returns: Point2D<'Units, 'Coordinates> option
list : float list
Returns: Point2D<'Units, 'Coordinates> option

inches x y

Full Usage: inches x y

Parameters:
    x : float
    y : float

Returns: Point2D<Meters, 'Coordinates>
x : float
y : float
Returns: Point2D<Meters, 'Coordinates>

interpolateFrom p1 p2 t

Full Usage: interpolateFrom p1 p2 t

Parameters:
    p1 : Point2D<'Units, 'Coordinates>
    p2 : Point2D<'Units, 'Coordinates>
    t : float

Returns: Point2D<'Units, 'c>

Construct a point by interpolating from the first given point to the second, based on a parameter that ranges from zero to one. You can pass values less than zero or greater than one to extrapolate.

p1 : Point2D<'Units, 'Coordinates>
p2 : Point2D<'Units, 'Coordinates>
t : float
Returns: Point2D<'Units, 'c>

lerp p1 p2 t

Full Usage: lerp p1 p2 t

Parameters:
    p1 : Point2D<'Units, 'Coordinates>
    p2 : Point2D<'Units, 'Coordinates>
    t : float

Returns: Point2D<'Units, 'Coordinates>
p1 : Point2D<'Units, 'Coordinates>
p2 : Point2D<'Units, 'Coordinates>
t : float
Returns: Point2D<'Units, 'Coordinates>

magnitude p

Full Usage: magnitude p

Parameters:
    p : Point2D<'Units, 'Coordinates>

Returns: Quantity<'Units>
p : Point2D<'Units, 'Coordinates>
Returns: Quantity<'Units>

meters x y

Full Usage: meters x y

Parameters:
    x : float
    y : float

Returns: Point2D<Meters, 'Coordinates>
x : float
y : float
Returns: Point2D<Meters, 'Coordinates>

midpoint p1 p2

Full Usage: midpoint p1 p2

Parameters:
    p1 : Point2D<'Units, 'Coordinates>
    p2 : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'Coordinates>
p1 : Point2D<'Units, 'Coordinates>
p2 : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

millimeters x y

Full Usage: millimeters x y

Parameters:
    x : float
    y : float

Returns: Point2D<Meters, 'Coordinates>
x : float
y : float
Returns: Point2D<Meters, 'Coordinates>

minus rhs lhs

Full Usage: minus rhs lhs

Parameters:
    rhs : Point2D<'Units, 'Coordinates>
    lhs : Point2D<'Units, 'Coordinates>

Returns: Vector2D<'Units, 'Coordinates>
rhs : Point2D<'Units, 'Coordinates>
lhs : Point2D<'Units, 'Coordinates>
Returns: Vector2D<'Units, 'Coordinates>

mirrorAcross axis p

Full Usage: mirrorAcross axis p

Parameters:
    axis : Axis2D<'Units, 'Coordinates>
    p : Point2D<'Units, 'Corodinates>

Returns: Point2D<'Units, 'Coordinates>

Mirror a point across an axis. The result will be the same distance from the axis but on the opposite side.

axis : Axis2D<'Units, 'Coordinates>
p : Point2D<'Units, 'Corodinates>
Returns: Point2D<'Units, 'Coordinates>

neg v

Full Usage: neg v

Parameters:
    v : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'Coordinates>
v : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

origin

Full Usage: origin

Returns: Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

pixels x y

Full Usage: pixels x y

Parameters:
    x : float
    y : float

Returns: Point2D<Meters, 'Coordinates>
x : float
y : float
Returns: Point2D<Meters, 'Coordinates>

placeIn frame point

Full Usage: placeIn frame point

Parameters:
    frame : Frame2D<'Units, 'GlobalCoordinates, 'LocalCoordinates>
    point : Point2D<'Units, 'LocalCoordinates>

Returns: Point2D<'Units, 'GlobalCoordinates>
frame : Frame2D<'Units, 'GlobalCoordinates, 'LocalCoordinates>
point : Point2D<'Units, 'LocalCoordinates>
Returns: Point2D<'Units, 'GlobalCoordinates>

plus rhs lhs

Full Usage: plus rhs lhs

Parameters:
Returns: Point2D<'Units, 'Coordinates>

This function is designed to be used in piping operators.

rhs : Vector2D<'Units, 'Coordinates>
lhs : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

polar r theta

Full Usage: polar r theta

Parameters:
Returns: Point2D<'a, 'b>
r : Quantity<'a>
theta : Angle
Returns: Point2D<'a, 'b>

projectOnto axis p

Full Usage: projectOnto axis p

Parameters:
    axis : Axis2D<'Units, 'Coordinates>
    p : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'Coordinates>

Project a point perpendicularly onto an axis. The axis does not have to pass through the origin:

axis : Axis2D<'Units, 'Coordinates>
p : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

rTheta r theta

Full Usage: rTheta r theta

Parameters:
Returns: Point2D<'Units, 'Coordinates>
r : Quantity<'Units>
theta : Angle
Returns: Point2D<'Units, 'Coordinates>

rThetaIn frame r theta

Full Usage: rThetaIn frame r theta

Parameters:
    frame : Frame2D<'Units, 'Coordinates, 'Defines>
    r : Quantity<'Units>
    theta : Angle

Returns: Point2D<'Units, 'a>

Construct a point given its local polar coordinates within a particular frame.

frame : Frame2D<'Units, 'Coordinates, 'Defines>
r : Quantity<'Units>
theta : Angle
Returns: Point2D<'Units, 'a>

relativeTo frame p

Full Usage: relativeTo frame p

Parameters:
    frame : Frame2D<'Units, 'GlobalCoordinates, 'LocalCoordinates>
    p : Point2D<'Units, 'GlobalCoordinates>

Returns: Point2D<'Units, 'LocalCoordinates>

Take a point defined in global coordinates, and return it expressed in local coordinates relative to a given reference frame.

frame : Frame2D<'Units, 'GlobalCoordinates, 'LocalCoordinates>
p : Point2D<'Units, 'GlobalCoordinates>
Returns: Point2D<'Units, 'LocalCoordinates>

rotateAround reference angle point

Full Usage: rotateAround reference angle point

Parameters:
    reference : Point2D<'Units, 'Coordinates>
    angle : Angle
    point : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'Coordinates>
reference : Point2D<'Units, 'Coordinates>
angle : Angle
point : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

rotateBy a p

Full Usage: rotateBy a p

Parameters:
    a : Angle
    p : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'Coordinates>

Rotate a point counterclockwise by a given angle.

a : Angle
p : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

round p

Full Usage: round p

Parameters:
    p : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'c>

Round the point to the internal precision. (Default is 8 digits past the decimal point)

p : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'c>

roundTo digits p

Full Usage: roundTo digits p

Parameters:
    digits : int
    p : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'a>

Round the point to a specified number of digits

digits : int
p : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'a>

scaleAbout p0 k p

Full Usage: scaleAbout p0 k p

Parameters:
    p0 : Point2D<'Units, 'Coordinates>
    k : float
    p : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'Coordinates>

Perform a uniform scaling about the given center point. The center point is given first and the point to transform is given last. Points will contract or expand about the center point by the given scale. Scaling by a factor of 1 is a no-op, and scaling by a factor of 0 collapses all points to the center point. Avoid scaling by a negative scaling factor - while this may sometimes do what you want it is confusing and error prone. Try a combination of mirror and/or rotation operations instead.

p0 : Point2D<'Units, 'Coordinates>
k : float
p : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

scaleBy

Full Usage: scaleBy

Returns: float -> Point2D<'a, 'b> -> Point2D<'a, 'b>

Alias for `times`

Returns: float -> Point2D<'a, 'b> -> Point2D<'a, 'b>

scaleTo length point

Full Usage: scaleTo length point

Parameters:
Returns: Point2D<'Units, 'Coordinates>

Scale a point to a given length.

length : Quantity<'Units>
point : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

signedDistanceAlong axis p

Full Usage: signedDistanceAlong axis p

Parameters:
    axis : Axis2D<'Units, 'Coordinates>
    p : Point2D<'Units, 'Coordinates>

Returns: Quantity<'Units>

Determine how far along an axis a particular point lies. Conceptually, the point is projected perpendicularly onto the axis, and then the distance of this projected point from the axis' origin point is measured. The result will be positive if the projected point is ahead the axis' origin point and negative if it is behind, with 'ahead' and 'behind' defined by the direction of the axis.

axis : Axis2D<'Units, 'Coordinates>
p : Point2D<'Units, 'Coordinates>
Returns: Quantity<'Units>

signedDistanceFrom axis p

Full Usage: signedDistanceFrom axis p

Parameters:
    axis : Axis2D<'Units, 'Coordinates>
    p : Point2D<'Units, 'Coordinates>

Returns: Quantity<'Units>

Find the perpendicular distance of a point from an axis. The result will be positive if the point is to the left of the axis and negative if it is to the right, with the forwards direction defined by the direction of the axis.

axis : Axis2D<'Units, 'Coordinates>
p : Point2D<'Units, 'Coordinates>
Returns: Quantity<'Units>

times rhs lhs

Full Usage: times rhs lhs

Parameters:
    rhs : float
    lhs : Point2D<'Units, 'Coordinates>

Returns: Point2D<'Units, 'Coordinates>
rhs : float
lhs : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

toList point

Full Usage: toList point

Parameters:
    point : Point2D<'Units, 'Coordinates>

Returns: float list
point : Point2D<'Units, 'Coordinates>
Returns: float list

toVector point

Full Usage: toVector point

Parameters:
    point : Point2D<'Units, 'Coordinates>

Returns: Vector2D<'Units, 'Coordinates>
point : Point2D<'Units, 'Coordinates>
Returns: Vector2D<'Units, 'Coordinates>

translate v p

Full Usage: translate v p

Parameters:
Returns: Point2D<'Units, 'Coordinates>
v : Vector2D<'Units, 'Coordinates>
p : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

translateBy v p

Full Usage: translateBy v p

Parameters:
Returns: Point2D<'Units, 'Coordinates>
v : Vector2D<'Units, 'Coordiantes>
p : Point2D<'Units, 'Coordinates>
Returns: Point2D<'Units, 'Coordinates>

translateIn d distance p

Full Usage: translateIn d distance p

Parameters:
Returns: Point2D<'Units, 'Coordiantes>

Translate a point in a given direction by a given distance.

d : Direction2D<'Coordinates>
distance : Quantity<'Units>
p : Point2D<'Units, 'Coordiantes>
Returns: Point2D<'Units, 'Coordiantes>

unitless x y

Full Usage: unitless x y

Parameters:
    x : float
    y : float

Returns: Point2D<Unitless, 'Coordinates>
x : float
y : float
Returns: Point2D<Unitless, 'Coordinates>

unsafe x y

Full Usage: unsafe x y

Parameters:
    x : float
    y : float

Returns: Point2D<'Units, 'Coordinates>
x : float
y : float
Returns: Point2D<'Units, 'Coordinates>

vectorTo target from

Full Usage: vectorTo target from

Parameters:
    target : Point2D<'Units, 'Coordinates>
    from : Point2D<'Units, 'Coordinates>

Returns: Vector2D<'Units, 'Coordinates>

Be careful with the vector arguments. This function is written with piping in mind. The first point is the target location. The second point is the starting location. This is also an alias for `minus` and is `target - from`

target : Point2D<'Units, 'Coordinates>
from : Point2D<'Units, 'Coordinates>
Returns: Vector2D<'Units, 'Coordinates>

x p

Full Usage: x p

Parameters:
    p : Point2D<'Units, 'Coordinates>

Returns: Quantity<'Units>
p : Point2D<'Units, 'Coordinates>
Returns: Quantity<'Units>

xCoordinateIn frame p

Full Usage: xCoordinateIn frame p

Parameters:
    frame : Frame2D<'Units, 'Coordinates, 'Defines>
    p : Point2D<'Units, 'Coordinates>

Returns: Quantity<'Units>

Find the X coordinate of a point relative to a given frame.

frame : Frame2D<'Units, 'Coordinates, 'Defines>
p : Point2D<'Units, 'Coordinates>
Returns: Quantity<'Units>

xy x y

Full Usage: xy x y

Parameters:
Returns: Point2D<'Units, 'Coordinates>
x : Quantity<'Units>
y : Quantity<'Units>
Returns: Point2D<'Units, 'Coordinates>

xyIn frame x y

Full Usage: xyIn frame x y

Parameters:
Returns: Point2D<'Units, 'Coordinates>

Construct a point given its local coordinates within a particular frame:

frame : Frame2D<'Units, 'Coordinates, 'Defines>
x : Quantity<'Units>
y : Quantity<'Units>
Returns: Point2D<'Units, 'Coordinates>

y p

Full Usage: y p

Parameters:
    p : Point2D<'Units, 'Coordinates>

Returns: Quantity<'Units>
p : Point2D<'Units, 'Coordinates>
Returns: Quantity<'Units>

yCoordinateIn frame p

Full Usage: yCoordinateIn frame p

Parameters:
    frame : Frame2D<'Units, 'Coordinates, 'Defines>
    p : Point2D<'Units, 'Coordinates>

Returns: Quantity<'Units>

Find the Y coordinate of a point relative to a given frame.

frame : Frame2D<'Units, 'Coordinates, 'Defines>
p : Point2D<'Units, 'Coordinates>
Returns: Quantity<'Units>