summaryrefslogtreecommitdiff
path: root/lib/great_circle_arc.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/great_circle_arc.py')
-rw-r--r--lib/great_circle_arc.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/great_circle_arc.py b/lib/great_circle_arc.py
index 056857d..93d9ad2 100644
--- a/lib/great_circle_arc.py
+++ b/lib/great_circle_arc.py
@@ -315,3 +315,26 @@ def midpoint(A, B):
l = np.sqrt(np.sum(P * P, axis=-1))
l = np.expand_dims(l, 2)
return P / l
+
+
+def interpolate(A, B, steps=50):
+ """
+ Interpolate along the great circle arc.
+
+ Parameters
+ ----------
+ A, B : (*x*, *y*, *z*) triples or Nx3 arrays of triples
+ The endpoints of the great circle arc. It is assumed that
+ these points are already normalized.
+
+ steps : int
+ The number of interpolation steps
+
+ Returns
+ -------
+ array : (*x*, *y*, *z*) triples
+ The points interpolated along the great circle arc
+ """
+ t = np.linspace(0, 1.0, steps, endpoint=True).reshape((steps, 1))
+
+ return (t * A) + ((1.0 - t) * B)