# Calculate all mid points of a line at a given interval

1. Jun 19, 2014

### Rich2020

Hi guys & girls, I'm using Google maps coordinates to draw a line and want to divide the line by its length, giving segments where the length of each segment is equal to 1.

EG:

P1
p1.lat = 54.97435323116719
p1.lng = 54.9742647135445

P2
p2.lat = -1.6116368025541306
p2.lng = -1.6115100681781769

let's assume that the unit of measure is meter.

Now, between the points p1 and p2, I need to calculate the (x,y) every 1 meter - along the length of the line.

My attempt results in:
x = -0.000006809047899462957, y = 0.00000974879815028264

but I'm not sure if that is correct.

I use the formula:
x = (x2-x1) / distance
y = (xy-xy) / distance

Is this correct? If not, how can I do this?

2. Jun 19, 2014

### Simon Bridge

The formula you used is for the distance between points in a pane - latitude and longitude are points on the surface of a sphere. The distance between the two points is the curved distance across the surface of the Earth.

3. Jun 19, 2014

### .Scott

I'm guessing that you meant:
P1
p1.lat = 54.97435323116719
p1.long = -1.6116368025541306

P2
p2.lat = 54.9742647135445
p2.long = -1.6115100681781769

These are points near New Castle, England. These points are only about 10 meters apart and not too close to the North or south poles. So, unless we're sticklers for precision, we won't need to deal with spherical geometry and great circle distances.

Another approximation we will use is the shape of the Earth. We will assume a sphere of radius 6353 meters.

So, with this model:

1 degree of latitude = 2 pi R / 360 = (2 · 3.1416 · 6353 / 360) KM
= 110.881 Km

1 degree of longitude = 2 pi R cos(lat) / 360 = cos(54.974°) · 110.88 KM = 0.573944 · 110.88 KM
= 63.639 Km

Our deltas are P2-P1:
D
d.lat = 54.9742647135445 - 54.97435323116719 = -0.00008851762269
d.long = -1.6115100681781769 - -1.6116368025541306 = 0.0001267343759537

The length of D will be about:
√ ( (d.lat*110.881)² + (d.long*63.639)² ) Km = √161.3809 m
= 12.703 meters

So we need to divide D into 12.703 pieces, although you may want to round to 13:
S = D/12.703
S.lat = D.lat/12.703 = -.0000069679°
S.long = D.long/12.703 = .0000099762°

S is a step value, so the points will be P1 + nS where n=1, 2, ... 12.

4. Jun 20, 2014

### Rich2020

Thanks so much! Here is a link to the results in action: http://jsfiddle.net/FPby3/

I still need to tweek it a little but it's doing what I need so thank you very much! I shall name the marker array after you!

5. Jun 20, 2014

### .Scott

I am honored!