code: function( dir, result, margin ){
  
              var norm
                  ,scratch = Physics.scratchpad()
                  ,next = scratch.vector()
                  ,prev = scratch.vector()
                  ,verts = this.vertices
                  ,l = verts.length
                  ,mag
                  ,sign = this._area > 0
                  ,data = {}
                  ;
  
              result = this.getFarthestHullPoint( dir, result, data );
  
              // get normalized directions to next and previous vertices
              next.clone( verts[ (data.idx + 1) % l ] ).vsub( result ).normalize().perp( sign );
              prev.clone( verts[ (data.idx - 1 + l) % l ] ).vsub( result ).normalize().perp( !sign );
  
              // get the magnitude of a vector from the result vertex
              // that splits down the middle
              // creating a margin of "m" to each edge
              mag = margin / (1 + next.dot(prev));
  
              result.vadd( next.vadd( prev ).mult( mag ) );
              scratch.done();
              return result;
          }
docs: extended