Skip to content

Instantly share code, notes, and snippets.

@andrewrcollins
Created September 4, 2015 02:34
Show Gist options
  • Save andrewrcollins/68af6fce377109c23226 to your computer and use it in GitHub Desktop.
Save andrewrcollins/68af6fce377109c23226 to your computer and use it in GitHub Desktop.
transit
var distance = require('euclidean-distance')
var lerp = require('lerp')
var pts = [[0, 0], [1, 4], [2, 9], [3, 2], [2, 0]]
//console.log(pts)
var distances = []
var sum = []
var total = 0
sum[0] = 0
distances[0] = 0
for (var i = 1, n = pts.length; i < n; i++) {
distances[i] = distance(pts[i - 1], pts[i])
total += distances[i]
sum[i] = total
}
var d
for (var t = 0.0; t <= 1.0; t += 0.01) {
d = total * t
for (var j = 0, m = sum.length - 1; j < m; j++) {
if ((d >= sum[j]) && (d <= sum[j + 1])) {
break
}
}
var pt = pts[j]
var x1 = pt[0]
var y1 = pt[1]
var pt = pts[j + 1]
var x2 = pt[0]
var y2 = pt[1]
var x = lerp(x1, x2, (d - sum[j]) / distances[j + 1])
var y = lerp(y1, y2, (d - sum[j]) / distances[j + 1])
console.log(x, y)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment