spherical interpolation in triangle

837 Views Asked by At

Is there a formula or algorithm with which one can interpolate the points of a triangle that lies on the unit sphere in a spherical manner?

Let me elaborate:

If you want to interpolate two points on a unit sphere spherical, you use slerp.

If you want to interpolate between points of a planar triangle, you probably want to use barycentric coordinates.

My overall goal is to create points within the triangle of the sphere which are evenly positioned, in regards to their angle, if possible.

In particular, I want to do create a geodesic polyhedron (based on an icosahedron) in which the triangles on the surface of the approximated sphere are as evenly spread as possible, without the points closer to an original corner of the icosahedron having smaller distances to each other than those in the middle.

My approach do to so so far was to interpolate spherical on two of the edges using slerp, and then between the points created in this manner, but a more direct approach over something like barycentric coordinates would be appreciated.

2

There are 2 best solutions below

0
On BEST ANSWER

I read further into Slerp and found out that it is not associative, which makes it a bad choice for nested application, as the order in which it is applied matters.

Further search into the topic yielded the paper Spherical Averages and Applications to Spherical Splines and Interpolation by Samuel R. Buss and Jay P. Fillmore.

The paper presents the concept of a spherical centroid.
For given points $p_1,...,p_n \in S^d$, given weights $w_1,...,w_n$ with $w_i \geq 0$ and $\sum_i w_i = 1$, and the spherical distance $d_S(\cdot,\cdot)$ (arc length of the shortest path between two points on the unit sphere, equals their angle), the spherical centroid is defined as

$argmin_{C \in S^d} \sum_i w_i \cdot d_S(C, p_i)^2$

Afther that, they state a proof that this is uniquely defined if all $p_i$ lie within a common hemisphere.

If we use this with three points, the weights work pretty much like barycentric coordinates, just what I wanted.

The paper also contains algorithms on how to compute this and I successfully implemented them in C++.

3
On

If your goal is to create a triangulation of a sphere that does not have singularities at the poles (as lat/lon rectangles do), look into the Quaternary Triangular Mesh or QTM devised by Geoffrey Dutton.

It starts with an octahedron inscribed in a sphere. Each triangle is called a "facet". If a facet is too big, it is divided into four facets by connecting the midpoints of the edges. Do this recursively until facets are small enough. You don't need to do it universally if you need different resolution in different areas. Assuming you do it universally, the ratio of the area of the smallest triangle to the largest one approaches 11/6, not zero as in the case of lat/lon rectangles.

Given lat/lon coordinates of a point, the facet in which that point appears can be found with time proportional to the degree of refinement. If done universally, the time complexity is the logarithm of the number of facets. Refining to nine levels yields facets with edges about 1.5 degrees.

You might also find Icosahedral Snyder Equal Area Hexagons, or ISEAH, to be useful. It's more complicated than QTM. I'm not related to John Snyder.