code: function () {
              var i;
              var edges = this.edges;
              var normals = this.normals;
              var indices = this.indices;
  
              // Copy the original points array and apply the offset/angle
              var points = this.points;
              var len = points.length;
  
              if (len < 3) {
                  throw new Error("Requires at least 3 points");
              }
  
              // Calculate the edges/normals
              for (i = 0; i < len; i++) {
                  if (edges[i] === undefined) {
                      edges[i] = new me.Vector2d();
                  }
                  edges[i].copy(points[(i + 1) % len]).sub(points[i]);
  
                  if (normals[i] === undefined) {
                      normals[i] = new me.Vector2d();
                  }
                  normals[i].copy(edges[i]).perp().normalize();
              }
              // trunc array
              edges.length = len;
              normals.length = len;
              // do not do anything here, indices will be computed by
              // toIndices if array is empty upon function call
              indices.length = 0;
  
              return this;
          }
docs: Computes the calculated collision polygon.
  This **must** be called if the `points` array, `angle`, or `offset` is modified manually.
  @name recalc
  @memberOf me.Polygon.prototype
  @function
  @return {me.Polygon} Reference to this object for method chaining