R: Conversion of Cartesian to Barycentric coordinates.
cart2bary
R Documentation
Conversion of Cartesian to Barycentric coordinates.
Description
Given the Cartesian coordinates of one or more points, compute
the barycentric coordinates of these points with respect to a
simplex.
Usage
cart2bary(X, P)
Arguments
X
Reference simplex in N dimensions represented by a
N+1-by-N matrix
P
M-by-N matrix in which each row is the Cartesian
coordinates of a point.
Details
Given a reference simplex in N dimensions represented by a
N+1-by-N matrix an arbitrary point mathbf{P} in
Cartesian coordinates, represented by a 1-by-N row vector, can be
written as
mathbf{P} = mathbf{β}mathbf{X}
where
mathbf{β} is a N+1 vector of the barycentric coordinates.
A criterion on mathbf{β} is that
∑_iβ_i = 1
Now
partition the simplex into its first N rows mathbf{X}_N and
its N+1th row mathbf{X}_{N+1}. Partition the barycentric
coordinates into the first N columns mathbf{β}_N and the
N+1th column β_{N+1}. This allows us to write
This can be generalised for multiple values of
mathbf{P}, one per row.
Value
M-by-N+1 matrix in which each row is the
barycentric coordinates of corresponding row of P. If the
simplex is degenerate a warning is issued and the function returns
NULL.
Note
Based on the Octave function by David Bateman.
Author(s)
David Sterratt
See Also
bary2cart
Examples
## Define simplex in 2D (i.e. a triangle)
X <- rbind(c(0, 0),
c(0, 1),
c(1, 0))
## Cartesian cooridinates of points
P <- rbind(c(0.5, 0.5),
c(0.1, 0.8))
## Plot triangle and points
trimesh(rbind(1:3), X)
text(X[,1], X[,2], 1:3) # Label vertices
points(P)
cart2bary(X, P)