Skip to content

Instantly share code, notes, and snippets.

@hakimel
Created November 18, 2013 20:22
Show Gist options
  • Save hakimel/7534649 to your computer and use it in GitHub Desktop.
Save hakimel/7534649 to your computer and use it in GitHub Desktop.
Simple script authored in the console to normalize linear path data. Makes it so that the path begins at 0,0 and expands to 100x100.
var d = '350,75 379,161 469,161 397,215 423,301 350,250 277,301 303,215 231,161 321,161'.split(' ')
for( var i = 0; i < d.length; i++ ) {
d[i] = d[i].split(',')
}
for( var i = 0; i < d.length; i++ ) {
d[i][0] = parseInt(d[i][0])
d[i][1] = parseInt(d[i][1])
}
var minX = 999999;
var minY = 999999;
for( var i = 0; i < d.length; i++ ) {
minX = Math.min( minX, d[i][0] );
minY = Math.min( minY, d[i][1] )
}
for( var i = 0; i < d.length; i++ ) {
d[i][0] -= minX;
d[i][1] -= minY;
}
var maxX = 0;
var maxY = 0;
for( var i = 0; i < d.length; i++ ) {
maxX = Math.max( maxX, d[i][0] );
maxY = Math.max( maxY, d[i][1] )
}
var fx = 100 / maxX;
var fy = 100 / maxY;
for( var i = 0; i < d.length; i++ ) {
d[i][0] *= fx;
d[i][1] *= fy;
}
for( var i = 0; i < d.length; i++ ) {
d[i][0] = Math.round( d[i][0] * 100 ) / 100;
d[i][1] = Math.round( d[i][1] * 100 ) / 100;
}
var o = [];
for( var i = 0; i < d.length; i++ ) {
o.push( d[i][0] + ',' + d[i][1] );
}
o.join( ' ' )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment