class AbstractGeographicProjection extends AbstractProjection {

    @Override
    public TesseraList<? extends GeographicProjectedTesseraVertex> convertPolygonToModelMesh(Polygon polygon,
            Vector3d modelCenter)
    {
        Utilities.checkNull(modelCenter, MODEL_CENTER_PARAMETER_NAME);

        SimpleTesseraBlockBuilder<GeographicTesseraVertex> triBuilder = new SimpleTesseraBlockBuilder<>(3, Vector3d.ORIGIN);

        VertexGenerator<GeographicTesseraVertex> vertexGenerator = new SimpleGeographicVertexGenerator(null, this, modelCenter);
        PolygonTriangulationUtil.triangulatePolygon(triBuilder, polygon, vertexGenerator);

        List<TesseraBlock<GeographicTesseraVertex>> tess = New.list(1);
        if (!triBuilder.getBlockVertices().isEmpty())
        {
            tess.add(new TesseraBlock<>(triBuilder, false));
        }
        return new TesseraList<>(tess);
    }

}