# Neo4j: Find the intermediate point between two lat/longs

``````
(a)-[:NEXT {time: 60}]->(b)-[:NEXT {time: 240}]->(c)
``````
``````
a = sin((1−f)⋅δ) / sin δ
b = sin(f⋅δ) / sin δ
x = a ⋅ cos φ1 ⋅ cos λ1 + b ⋅ cos φ2 ⋅ cos λ2
y = a ⋅ cos φ1 ⋅ sin λ1 + b ⋅ cos φ2 ⋅ sin λ2
z = a ⋅ sin φ1 + b ⋅ sin φ2
φi = atan2(z, √x² + y²)
λi = atan2(y, x)

δ is the angular distance d/R between the two points.
φ = latitude
λ = longitude
``````
``````
with {latitude: 51.4931963543, longitude: -0.0475185810} AS p1,
{latitude: 51.47908, longitude: -0.05393950 } AS p2

WITH p1, p2, distance(point(p1), point(p2)) / 6371000 AS δ, 0.2 AS f
WITH p1, p2, δ,
sin((1-f) * δ) / sin(δ) AS a,
sin(f * δ) / sin(δ) AS b
a, b
WITH a * cos(φ1) * cos(λ1) + b * cos(φ2) * cos(λ2) AS x,
a * cos(φ1) * sin(λ1) + b * cos(φ2) * sin(λ2) AS y,
a * sin(φ1) + b * sin(φ2) AS z
RETURN degrees(atan2(z, sqrt(x^2 + y^2))) AS φi,
degrees(atan2(y,x)) AS λi
``````
``````
╒═════════════════╤════════════════════╕
│φi               │λi                  │
╞═════════════════╪════════════════════╡
│51.49037311149128│-0.04880308288561931│
└─────────────────┴────────────────────┘
``````
``````
╒═════════════════╤═════════════════════╕
│φi               │λi                   │
╞═════════════════╪═════════════════════╡
│51.48613822097523│-0.050729537454086385│
└─────────────────┴─────────────────────┘
``````