Switch to Euclidean-invariant projection onto tangent space of solution variety #34
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "uniform-projection"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This pull request addresses issues #32 and #33 by projecting nudges onto the tangent space of the solution variety using a Euclidean-invariant inner product, which I'm calling the uniform inner product.
Definition of the uniform inner product
For spheres and planes, the uniform inner product is defined on the tangent space of the hyperboloid
\langle v, v \rangle = 1
. For points, it's defined on the tangent space of the paraboloid\langle v, v \rangle = 0,\; \langle v, I_\infty \rangle = 1
.The tangent space of an assembly can be expressed as the direct sum of the tangent spaces of the elements. We extend the uniform inner product to assemblies by declaring the tangent spaces of different elements to be orthogonal.
For spheres and planes
If
v = [x, y, z, b, c]^\top
is on the hyperboloid\langle v, v \rangle = 1
, the vectorsform a basis for the tangent space of hyperboloid at
v
. We declare this basis to be orthonormal with respect to the uniform inner product.The first three vectors in the basis are unit-speed translations along the coordinate axes. The last vector moves the surface at unit speed along its normal field. For spheres, this increases the radius at unit rate. For planes, this translates the plane parallel to itself at unit speed. This description makes it clear that the uniform inner product is invariant under Euclidean motions.
For points
If
v = [x, y, z, b, c]^\top
is on the paraboloid\langle v, v \rangle = 0,\; \langle v, I_\infty \rangle = 1
, the vectorsform a basis for the tangent space of paraboloid at
v
. We declare this basis to be orthonormal with respect to the uniform inner product.The meanings of the basis vectors, and the argument that the uniform inner product is Euclidean-invariant, are the same as for spheres and planes. In the engine, we pad the basis with
[0, 0, 0, 0, 1]^\top
to keep the number of uniform coordinates consistent across element types.symmetric_kernel
in projection coordinates 21cefa9f8aI see there were two batches of commits. Is this PR ready for review? Does this inner product seem to provide all of our nudging desiderata, or is it a tradeoff? If so, what are the pros and cons? I mean, I assume one main pro is that translating and nudging now commute, correct? Do we have an explicit unit test to examine that commutativity?
Checkout
From your project repository, check out a new branch and test the changes.