Wrap basis generation method with a function that computes the geodesic interpolation from the previous frame to the next frame, and provides convenient access to all the information about the path.
geodesic_path(current, target, frozen = NULL, ...)
starting projection
ending projection
matrix giving frozen variables, as described in
freeze
A function with single parameter in [0, 1] that returns an interpolated frame between the current and future frames. 0 gives the current plane, 1 gives the new target frame in plane of current frame.
The distance, in radians, between the current and target frames.
The current frame.
The new target frame.
The principle angles between the current and target frames.
The current plane.
The target plane.
Frozen variables allow us to keep certain values of the projection fixed and generate a geodesic across the subspace generated by those
a <- basis_random(4, 2)
b <- basis_random(4, 2)
path <- geodesic_path(a, b)
path$dist
#> [1] 1.414265
all.equal(a, path$interpolate(0))
#> [1] TRUE
# Not true generally - a rotated into plane of b
all.equal(b, path$interpolate(1))
#> [1] "Mean relative difference: 1.783492"