Maths.Maps

public static class Maths.Maps
Utility class for mapping coordinates between various spaces.

Methods

BarycentricToCartesian

#
public static void BarycentricToCartesian(double a, double b, double c, Point2d A, Point2d B, Point2d C, out Point2d point)
Convert a two-dimensional barycentric coordinate into cartesian coordinates.
a (double)First barycentric parameter.
b (double)Second barycentric parameter.
c (double)Third barycentric parameter.
A (Point2d)First barycentric point in cartesian space.
B (Point2d)Second barycentric point in cartesian space.
C (Point2d)Third barycentric point in cartesian space.
point (out Point2d)Cartesian point.

BarycentricToCartesian

#
public static void BarycentricToCartesian(double a, double b, double c, Point3d A, Point3d B, Point3d C, out Point3d point)
Convert a three-dimensional barycentric coordinate into cartesian coordinates.
a (double)First barycentric parameter.
b (double)Second barycentric parameter.
c (double)Third barycentric parameter.
A (Point3d)First barycentric point in cartesian space.
B (Point3d)Second barycentric point in cartesian space.
C (Point3d)Third barycentric point in cartesian space.
point (out Point3d)Cartesian point.

BarycentricToTrilinear

#
public static void BarycentricToTrilinear(Point2d A, Point2d B, Point2d C, double a, double b, double c, out double u, out double v, out double w)
Convert barycentric coordinates into trilinear coordinates.
A (Point2d)First corner of triangle.
B (Point2d)Second corner of triangle.
C (Point2d)Third corner of triangle.
a (double)First barycentric parameter.
b (double)Second barycentric parameter.
c (double)Third barycentric parameter.
u (out double)First trilinear parameter.
v (out double)Second trilinear parameter.
w (out double)Third trilinear parameter.

BarycentricToTrilinear

#
public static void BarycentricToTrilinear(Point3d A, Point3d B, Point3d C, double a, double b, double c, out double u, out double v, out double w)
Convert barycentric coordinates into trilinear coordinates.
A (Point3d)First corner of triangle.
B (Point3d)Second corner of triangle.
C (Point3d)Third corner of triangle.
a (double)First barycentric parameter.
b (double)Second barycentric parameter.
c (double)Third barycentric parameter.
u (out double)First trilinear parameter.
v (out double)Second trilinear parameter.
w (out double)Third trilinear parameter.

BetweenIntervals

#
public static double BetweenIntervals(double value, double sourceLower, double sourceUpper, double targetLower, double targetUpper)
Map a number from one numeric interval to another.
value (double)Value in source interval.
sourceLower (double)Source interval lower limit.
sourceUpper (double)Source interval upper limit.
targetLower (double)Target interval lower limit.
targetUpper (double)Target interval upper limit.
Remapped value.

CartesianToBarycentric

#
public static void CartesianToBarycentric(Point2d point, Point2d A, Point2d B, Point2d C, out double a, out double b, out double c)
Convert a two dimensional cartesian coordinate into areal barycentric parameters.
point (Point2d)Cartesian point.
A (Point2d)First barycentric triangle point.
B (Point2d)Second barycentric triangle point.
C (Point2d)Third barycentric triangle point.
a (out double)First barycentric parameter.
b (out double)Second barycentric parameter.
c (out double)Third barycentric parameter.

CartesianToBarycentric

#
public static void CartesianToBarycentric(Point3d point, Point3d A, Point3d B, Point3d C, out double a, out double b, out double c)
Convert a three dimensional cartesian coordinate into areal barycentric parameters. Note, the mapping of point onto the triangle is used. For full control over the conversion we suggest using the two-dimensional overload instead, and performing any planarisation ahead of time.
point (Point3d)Cartesian point.
A (Point3d)First barycentric triangle point.
B (Point3d)Second barycentric triangle point.
C (Point3d)Third barycentric triangle point.
a (out double)First barycentric parameter.
b (out double)Second barycentric parameter.
c (out double)Third barycentric parameter.

CartesianToElliptic

#
public static void CartesianToElliptic(double a, Point2d point, double tolerance, int iterations, out double radial, out double angular)
Convert a cartesian world coordinate into elliptic coordinates.
a (double)Distance from world origin to either elliptic pole.
point (Point2d)Cartesian point.
tolerance (double)Tolerance for approximation. Zero or less will revert to default tolerance.
iterations (int)Maximum number of allowed iterations. Zero or less will revert to default iteration cap.
radial (out double)Mu parameter.
angular (out double)Nu parameter.

CartesianToSpherical

#
public static void CartesianToSpherical(Point3d point, out double theta, out double phi, out double radius)
Convert cartesian world coordinates into spherical polar coordinates.
point (Point3d)Point.
theta (out double)Theta angle in world z-axis.
phi (out double)Phi angle in between point and world xy-plane.
radius (out double)Radius.

CartesianToSpherical

#
public static void CartesianToSpherical(Point3d point, Plane local, out double theta, out double phi, out double radius)
Convert cartesian world coordinates into local spherical polar coordinates.
point (Point3d)Point.
local (Plane)Local spherical coordinate system.
theta (out double)Theta angle around local z-axis.
phi (out double)Phi angle from local xy-plane.
radius (out double)Radius.

CubeToSphere

#
public static void CubeToSphere(Point3d pointInCube, out Point3d pointInSphere)
Map coordinates from the double-unit cube (centered on world-origin, edge=2) to the unit-sphere (centered on world origin, radius=1), such that points on the surface of the cube end up on the surface of the sphere.
pointInCube (Point3d)Coordinate in cartesian cube context.
pointInSphere (out Point3d)Coordinate in cartesian sphere context.

DiscToPlane

#
public static void DiscToPlane(double u, double v, out double x, out double y)
Map the unit disc onto the World XY plane using a tangent mapping. Points coincident with the disc boundary or points beyond the disc, will be mapped to infinity.
u (double)X coordinate within unit disc.
v (double)Y coordinate within unit disc.
x (out double)World X coordinate.
y (out double)World Y coordinate.

DiscToPlane

#
public static void DiscToPlane(Point2d centre, double radius, double u, double v, out double x, out double y)
Map the unit disc onto the World XY plane using a tangent mapping. Points coincident with the disc boundary or points beyond the disc, will be mapped to infinity.
centre (Point2d)Centre point of disc.
radius (double)Radius of disc.
u (double)X coordinate within unit disc.
v (double)Y coordinate within unit disc.
x (out double)World X coordinate.
y (out double)World Y coordinate.

DiscToSquare

#
public static void DiscToSquare(DiscMapping mapping, double u, double v, out double x, out double y)
Convert a 2d coordinate from the unit disc interior to the unit square interior.
mapping (Maths.Maps.DiscMapping)Mapping conversion.
u (double)Circle u coordinate.
v (double)Circle v coordinate.
x (out double)Square x coordinate.
y (out double)Square y coordinate.

EllipticToCartesian

#
public static void EllipticToCartesian(double a, double radial, double angular, out Point2d point)
Convert a set of two dimensional elliptic coordinates into cartesian world coordinates.
a (double)Distance from world origin to either elliptic pole.
radial (double)First elliptic parameter, associated with the distance from the poles.
angular (double)Second elliptic parameter, associated with the rotation around the poles.
point (out Point2d)Cartesian world point associated with (radial, angular).

EllipticToCartesian

#
public static void EllipticToCartesian(Point2d pole0, Point2d pole1, double mu, double nu, out Point2d point)
Convert a set of two dimensional elliptic coordinates into cartesian world coordinates.
pole0 (Point2d)First elliptic pole.
pole1 (Point2d)Second elliptic pole, must be a different point that pole0.
mu (double)First elliptic parameter.
nu (double)Second elliptic parameter.
point (out Point2d)Cartesian world point associated with (radial, angular).

FromUnitInterval

#
public static double FromUnitInterval(double value, double lower, double upper)
Map a number from the unit interval to a custom interval.
value (double)Value to map.
lower (double)Custom interval lower limit.
upper (double)Custom interval upper limit.
Denormalised value.

HilbertIndexToUnitSquare

#
public static (long x, long y) HilbertIndexToUnitSquare(int k, long d)
Convert a Hilbert linear index into a unit (x,y) coordinate.
k (int)Hilbert curve density in the range (0, 31].
d (long)Hilbert linear index.
Tuple of unit square indices.

HilbertParameterToUnitSquare

#
public static Point2d HilbertParameterToUnitSquare(int k, double t)
Convert a Hilbert curve parameter into a coordinate in the unit square.
k (int)Hilbert curve density in the range (0, 31].
t (double)Normalised Hilbert curve parameter.
Hilbert parameter.

LocalToLocal

#
public static Point3d LocalToLocal(Point3d point, Plane source, Plane target)
Map a point from one local coordinate system into another.
point (Point3d)Point in source coordinates.
source (Plane)Source coordinate system.
target (Plane)Target coordinate system.
Point in target coordinates.

LocalToLocal

#
public static Point3d LocalToLocal(Point3d point, Point3d sourceOrigin, Vector3d sourceI, Vector3d sourceJ, Vector3d sourceK, Point3d targetOrigin, Vector3d targetI, Vector3d targetJ, Vector3d targetK)
Map a point from one local coordinate system into another.
point (Point3d)
sourceOrigin (Point3d)
sourceI (Vector3d)
sourceJ (Vector3d)
sourceK (Vector3d)
targetOrigin (Point3d)
targetI (Vector3d)
targetJ (Vector3d)
targetK (Vector3d)

LocalToWorld

#
public static Point3d LocalToWorld(Point3d point, Plane local)
Map a point in a local coordinate system into world coordinates.
point (Point3d)Point.
local (Plane)Local coordinate system.
Point in world coordinates.

LocalToWorld

#
public static Point3d LocalToWorld(Point3d point, Point3d origin, Vector3d unitI, Vector3d unitJ, Vector3d unitK)
Map a point in a local coordinate system into world coordinates.
point (Point3d)Point.
origin (Point3d)Local coordinate system origin.
unitI (Vector3d)Local coordinate system i hat.
unitJ (Vector3d)Local coordinate system j hat.
unitK (Vector3d)Local coordinate system k hat.

PlaneToDisc

#
public static void PlaneToDisc(double x, double y, out double u, out double v)
Map the World XY plane onto the unit disc using a polar arc-tangent mapping.
x (double)World x coordinate.
y (double)World y coordinate.
u (out double)Mapped x coordinate within disc.
v (out double)Mapped y coordinate within disc.

PlaneToDisc

#
public static void PlaneToDisc(Point2d centre, double radius, double x, double y, out double u, out double v)
Map the World XY plane onto the unit disc using a polar arc-tangent mapping.
centre (Point2d)Centre point of disc.
radius (double)Radius of disc.
x (double)World x coordinate.
y (double)World y coordinate.
u (out double)Mapped x coordinate within disc.
v (out double)Mapped y coordinate within disc.

PlaneToPlane

#
public static void PlaneToPlane(PlaneMapping mapping, double base, double x, double y, out double u, out double v)
Map XY coordinates.
mapping (Maths.Maps.PlaneMapping)Mapping algorithm.
base (double)Logarithm/exponential base.
x (double)X coordinate.
y (double)Y coordinate.
u (out double)Mapped x coordinate.
v (out double)Mapped y coordinate.

PlaneToPlane

#
public static void PlaneToPlane(PlaneMapping mapping, double base, double x, double z, double y, out double u, out double v, out double w)
Map XZY coordinates.
mapping (Maths.Maps.PlaneMapping)Mapping algorithm.
base (double)Logarithm/exponential base.
x (double)X coordinate.
z (double)Z coordinate.
y (double)Y coordinate.
u (out double)Mapped x coordinate.
v (out double)Mapped y coordinate.
w (out double)Mapped z coordinate.

PlaneToPlane

#
public static void PlaneToPlane(PlaneMapping mapping, double x, double y, double z, out double u, out double v, out double w)
Map XYZ coordinates using natural logarithms.
mapping (Maths.Maps.PlaneMapping)Mapping algorithm.
x (double)X coordinate.
y (double)Y coordinate.
z (double)Z coordinate.
u (out double)Mapped x coordinate.
v (out double)Mapped y coordinate.
w (out double)Mapped z coordinate.

PlaneToPlane

#
public static void PlaneToPlane(PlaneMapping mapping, double x, double y, out double u, out double v)
Map XY coordinates using natural logarithms.
mapping (Maths.Maps.PlaneMapping)Mapping algorithm.
x (double)X coordinate.
y (double)Y coordinate.
u (out double)Mapped x coordinate.
v (out double)Mapped y coordinate.

SphereToCube

#
public static void SphereToCube(Point3d pointInSphere, out Point3d pointInCube)
Map coordinates from the unit sphere (centered on world-origin, radius=1) to the double-unit-box (centered on world origin, edge=2), such that points on the surface of the sphere end up on the surface of the box.
pointInSphere (Point3d)Coordinate in cartesian sphere context.
pointInCube (out Point3d)Coordinate in cartesian cube context.

SphericalToCartesian

#
public static Point3d SphericalToCartesian(double theta, double phi, double radius)
Convert world polar coordinates into cartesian coordinates.
theta (double)XY angle in radians.
phi (double)Z angle in radians.
radius (double)Radius.
Point in cartesian world coordinates.

SphericalToCartesian

#
public static Point3d SphericalToCartesian(double theta, double radius)
Convert world polar coordinates into cartesian coordinates.
theta (double)XY angle in radians.
radius (double)Radius.
Point in cartesian world coordinates.

SphericalToCartesian

#
public static Point3d SphericalToCartesian(Plane local, double theta, double phi, double radius)
Convert local polar coordinates into cartesian coordinates.
local (Plane)Local coordinate system.
theta (double)XY angle in radians.
phi (double)Z angle in radians.
radius (double)Radius.
Point in cartesian local coordinates.

SphericalToCartesian

#
public static Point3d SphericalToCartesian(Plane local, double theta, double radius)
Convert local polar coordinates into cartesian coordinates.
local (Plane)Local coordinate system.
theta (double)XY angle in radians.
radius (double)Radius.
Point in cartesian local coordinates.

SquareToDisc

#
public static void SquareToDisc(DiscMapping mapping, double x, double y, out double u, out double v)
Convert a 2d coordinate from the unit square interior to the unit disc interior.
mapping (Maths.Maps.DiscMapping)Mapping conversion.
x (double)Square x coordinate.
y (double)Square y coordinate.
u (out double)Circle u coordinate.
v (out double)Circle v coordinate.

ToUnitInterval

#
public static double ToUnitInterval(double value, double lower, double upper)
Map a number from a custom interval to the unit interval.
value (double)Value to map.
lower (double)Custom interval lower limit.
upper (double)Custom interval upper limit.
Normalised value.

TrilinearToBarycentric

#
public static void TrilinearToBarycentric(Point2d A, Point2d B, Point2d C, double u, double v, double w, out double a, out double b, out double c)
Convert trilinear coordinates into barycentric coordinates.
A (Point2d)First corner of triangle.
B (Point2d)Second corner of triangle.
C (Point2d)Third corner of triangle.
u (double)First trilinear parameter.
v (double)Second trilinear parameter.
w (double)Third trilinear parameter.
a (out double)First barycentric parameter.
b (out double)Second barycentric parameter.
c (out double)Third barycentric parameter.

TrilinearToBarycentric

#
public static void TrilinearToBarycentric(Point3d A, Point3d B, Point3d C, double u, double v, double w, out double a, out double b, out double c)
Convert trilinear coordinates into barycentric coordinates.
A (Point3d)First corner of triangle.
B (Point3d)Second corner of triangle.
C (Point3d)Third corner of triangle.
u (double)First trilinear parameter.
v (double)Second trilinear parameter.
w (double)Third trilinear parameter.
a (out double)First barycentric parameter.
b (out double)Second barycentric parameter.
c (out double)Third barycentric parameter.

UnitSquareToHilbertIndex

#
public static long UnitSquareToHilbertIndex(int k, long x, long y)
Convert an (x,y) integer coordinate to a Hilbert linear index.
k (int)Hilbert curve density in the range (0, 31].
x (long)Square horizontal index, must be in the domain [0, 2^n].
y (long)Square vertical index, must be in the domain [0, 2^n].
Index of hilbert segment.

UnitSquareToHilbertParameter

#
public static double UnitSquareToHilbertParameter(int k, Point2d point)
Convert an (x,y) coordinate in the unit square to a linear parameter along the Hilbert curve.
k (int)Hilbert curve density in the range (0, 31].
point (Point2d)Coordinate in the unit square.
Hilbert parameter.

WorldToLocal

#
public static Point3d WorldToLocal(Point3d point, Plane local)
Map a point in world coordinates into a local coordinate system.
point (Point3d)Point in world coordinates.
local (Plane)Local coordinate system.
Point in local coordinates.

WorldToLocal

#
public static Point3d WorldToLocal(Point3d point, Point3d origin, Vector3d unitI, Vector3d unitJ, Vector3d unitK)
Map a point in world coordinates into a local coordinate system.
point (Point3d)Point.
origin (Point3d)Local coordinate system origin.
unitI (Vector3d)Local coordinate system i hat.
unitJ (Vector3d)Local coordinate system j hat.
unitK (Vector3d)Local coordinate system k hat.