getSubtreeOverlapScore(vertexId, parentVertexId, vertexOverlapScores) {
    let that = this;
    let score = 0;
    let center = new Vector2(0, 0);
    let count = 0;
    this.graph.traverseTree(vertexId, parentVertexId, function (vertex) {
      if (!vertex.value.isDrawn) {
        return;
      }

      let s = vertexOverlapScores[vertex.id];

      if (s > that.opts.overlapSensitivity) {
        score += s;
        count++;
      }

      let position = that.graph.vertices[vertex.id].position.clone();
      position.multiplyScalar(s);
      center.add(position);
    });
    center.divide(score);
    return {
      value: score / count,
      center: center
    };
  }
Gets the overlap score of a subtree.

@param {Number} vertexId A vertex id (the root of the sub-tree).
@param {Number} parentVertexId A vertex id in the previous direction of the subtree.
@param {Number[]} vertexOverlapScores An array containing the vertex overlap scores indexed by vertex id.
@returns {Object} An object containing the total overlap score and the center of mass of the subtree weighted by overlap score { value: 0.2, center: new Vector2() }.