This section calculates the natural homeomorphism from the space of \(n\) or fewer arcs on the circle, denoted by \(A_n\), to the sphere \(\mathbb{S}^{2n}\), and its inverse.
spherefromarcs( arcmat, n=NULL, gapmin=0 )
spherefromarcs_plus( arcmat, n=NULL, gapmin=5e-10 )
arcsfromsphere( u )spherefromarcs() maps from \(A_n\) to \(\mathbb{S}^{2n}\);
it returns a unit vector in \(\mathbb{R}^{2n+1}\).
It is simply the composition of boundaryfromarcs()
and spherefromboundary(),
with a little error checking.
In case of error, it returns NULL.
spherefromarcs_plus() is the same as spherefromarcs(),
except it returns additional data.
It returns a list with these items:
the same unit vector returned by spherefromarcs().
Its length is 2*n+1.
a 2*n+1 x 2*n0 matrix whose columns are tangent, at u, to the substratum \(\mathbb{S}^{2 n_0} \hookrightarrow \mathbb{S}^{2n}\).
This is the jacobian of the map \(A_{n_0} \to \mathbb{S}^{2 n_0}\),
when the space of arcs is parameterized by the endpoints of the arcs.
a 2*n+1 x 2*(n-n0) matrix whose columns are normal, at u,
to the substratum \(\mathbb{S}^{2 n_0} \hookrightarrow \mathbb{S}^{2n}\).
These columns are an orthonormal basis for the subspace.
If n==n0 there are 0 columns.
The matrix cbind(u,tangent,normal) is square.
When n>n0, the last normal vector is flipped if necessary,
so that the determinant of the square matrix is positive.
If \(m\) is the length of u,
then arcsfromsphere()
maps from \(\mathbb{S}^{m-1}\) to \(A_N\).
It returns an Nx2 matrix defining N arcs as above.
Because the space of arcs is stratified,
N might be less than expected, which is \((m-1)/2\).
It is simply the composition of boundaryfromsphere()
and arcsfromboundary(),
with a little error checking.
In this version of the package,
valid values for \(m\) are 1,3,5, and 7.
In case of error, it returns NULL.
an n0 x 2 matrix with an arc definition in each row;
so the total number of arcs is n0.
The 1st number in the row is the center of the arc,
and the 2nd number is the length of the arc;
both in radians.
The length can be 0 or \(2\pi\),
defining the empty arc and the full circle respectively.
For these improper arcs, there must be only 1 row,
and the center is ignored.
the given set of arcs is taken to be in \(A_n\).
If n is NULL, then n is set to
n0 = nrow(arcmat),
unless arcmat defines an improper arc,
when n is set to 0.
If n is not NULL, then we must have
n \(\ge\) n0.
The returned vector is in \(\mathbb{R}^{2n+1}\).
the minimum gap between arcs in arcmat that is valid.
The value gapmin=0 allows abutting arcs,
but not overlapping arcs.
If one is sure that the arcs are not overlapping,
then set gapmin=-Inf and this validation check
is skipped, which saves a tiny bit of time.
In spherefromarcs_plus() abutting arcs are invalid,
so gapmin must be positive.
a unit vector in \(\mathbb{R}^{2N+1}\) or \(\mathbb{R}^{2N}\).
In the latter case (an even-dimensional space),
a 0 is appended to make u odd-dimensional.
These first and last functions are inverses of each other.
Let \(a\) be a set of \(n\) strictly disjoint arcs in \(A_n\),
and denote the \(n\) complementary arcs by \(\bar{a}\).
Let \(\alpha : \mathbb{S}^{2n} \to \mathbb{S}^{2n}\)
denote the antipodal map.
Let \(h\) denote spherefromarcs().
Then \(h( \bar{a} ) = \alpha( h(a) )\).
A fancier way to say this:
the antipodal map \(\alpha\) on \(\mathbb{S}^{2n}\)
and the complementary map \( a \mapsto \bar{a} \) on \(A_n\)
are conjugate.
If \(s\) is the full circle, then \(h(s)\) = (0,...,0,1). If \(\phi\) is the empty arc, then \(h(\phi)\) = (0,...,0,-1).
boundaryfromarcs(),
spherefromboundary(),
boundaryfromsphere(),
arcsfromboundary(),
complementaryarcs()