code: function getSegDist(p, p1, p2) {
          
          var x = p1.x,
          y = p1.y,
          dx = p2.x - x,
          dy = p2.y - y;
          
          if (dx !== 0 || dy !== 0) {
              
              var t = ((p.x - x) * dx + (p.y - y) * dy) / (dx * dx + dy * dy);
              
              if (t > 1) {
                  x = p2.x;
                  y = p2.y;
                  
              } else if (t > 0) {
                  x += dx * t;
                  y += dy * t;
              }
          }
          
          dx = p.x - x;
          dy = p.y - y;
          
          return Math.sqrt(dx * dx + dy * dy);
      }
docs: réduit le nombre de points du chemin en précisant une distance minimale entre 2 points.
  @param minDistance distance minimale en pixels entre 2 points en dessous de laquelle l'un des 2 sera supprimé.
  @param screen si true, cette distance est la distance en pixels visible à  l'écran (donc plus faible si le chemin est zoomé), sinon
  c'est la distance absolue entre 2 points du chemin.
  @returns {Path}
  
  Path.prototype.slim = function(minDistance,screen) {
  
  var i = 0,
  ctm = screen ? this.parent().getMtx('screen') : new JSYG.Matrix(),
  seg,next;
  
  while (i < this.nbSegs()-2) { //pas le dernier point
  
  seg = new JSYG.Point(this.getSeg(i)).mtx(ctm);
  next = new JSYG.Point(this.getSeg(i+1)).mtx(ctm);
  
  if (distance(seg,next) < minDistance) {
  
  if (i < this.nbSegs()-2) this.removeSeg(i+1);
  else this.removeSeg(i);
  }
  else i++;
  }
  
  return this;
  };