      (is_clockwise ? clockwise_edges_ : anticlockwise_edges_)
          ->push_back(MakeEdge(start_vertex_id,
                               static_cast<int>(vertices_->size()) - 1));
      start_pos = end_pos + 1;
      y = (is_clockwise ? bbox_.down_contour : bbox_.up_contour)
              ->at(start_pos - this->x_min());
      vertices_->push_back(Vertex(start_pos, y));
      start_vertex_id = static_cast<int>(vertices_->size()) - 1;
    }
    (is_clockwise ? clockwise_edges_ : anticlockwise_edges_)
        ->push_back(MakeEdge(start_vertex_id, end_vertex_id));
  } else {