Imports and implicits

import edu.uci.ics.jung.graph.DirectedSparseGraph
import cats.implicits._
import spire.implicits.DoubleAlgebra
import axle._
import axle.quanta._
import axle.algebra.GeoCoordinates
import axle.jung.directedGraphJung
import axle.algebra.modules.doubleRationalModule

implicit val angleConverter = Angle.converterGraphK2[Double, DirectedSparseGraph]
import angleConverter.°

Locations of SFO and HEL airports:

val sfo = GeoCoordinates(37.6189 *: °, 122.3750 *: °)
// sfo: axle.algebra.GeoCoordinates[Double] = GeoCoordinates(UnittedQuantity(37.6189,UnitOfMeasurement(degree,°,Some(http://en.wikipedia.org/wiki/Degree_(angle)))),UnittedQuantity(122.375,UnitOfMeasurement(degree,°,Some(http://en.wikipedia.org/wiki/Degree_(angle)))))

val hel = GeoCoordinates(60.3172 *: °, -24.9633 *: °)
// hel: axle.algebra.GeoCoordinates[Double] = GeoCoordinates(UnittedQuantity(60.3172,UnitOfMeasurement(degree,°,Some(http://en.wikipedia.org/wiki/Degree_(angle)))),UnittedQuantity(-24.9633,UnitOfMeasurement(degree,°,Some(http://en.wikipedia.org/wiki/Degree_(angle)))))

Import the LengthSpace

import axle.algebra.GeoCoordinates.geoCoordinatesLengthSpace
// import axle.algebra.GeoCoordinates.geoCoordinatesLengthSpace

Use it to compute the points at 10% increments from SFO to HEL

(0 to 10).map(i => geoCoordinatesLengthSpace.onPath(sfo, hel, i / 10d)) map { mp => string(mp) } mkString("\n")
// res1: String =
// 37.618900000000004° N 122.37500000000003° W
// 45.13070460867812° N 119.34966960499106° W
// 52.538395227224065° N 115.40855064022753° W
// 59.76229827032038° N 109.88311454897514° W
// 66.62843399359917° N 101.39331801935985° W
// 72.70253233457194° N 86.91316673834633° W
// 76.8357649372965° N 61.093630209243706° W
// 77.01752181288721° N 25.892878424459116° W
// 73.11964173748505° N -0.9862308621078928° W
// 67.1423066577233° N -16.143753987066464° W
// 60.3172° N -24.9633° W

SFO to HEL