001package conexp.fx.core.math;
002
003/*
004 * #%L
005 * Concept Explorer FX
006 * %%
007 * Copyright (C) 2010 - 2023 Francesco Kriegel
008 * %%
009 * This program is free software: you can redistribute it and/or modify
010 * it under the terms of the GNU General Public License as
011 * published by the Free Software Foundation, either version 3 of the
012 * License, or (at your option) any later version.
013 * 
014 * This program is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 * 
019 * You should have received a copy of the GNU General Public
020 * License along with this program.  If not, see
021 * <http://www.gnu.org/licenses/gpl-3.0.html>.
022 * #L%
023 */
024
025
026import java.util.Collection;
027import java.util.List;
028
029import be.humphreys.simplevoronoi.GraphEdge;
030import be.humphreys.simplevoronoi.Voronoi;
031import javafx.geometry.Point3D;
032
033public class VoronoiGenerator {
034
035  public static final <G, M> List<GraphEdge> generate(
036      final Collection<Point3D> points,
037      final double minX,
038      final double maxX,
039      final double minY,
040      final double maxY) {
041    final float minDistanceBetweenSites = 0.00001f;
042    final int size = points.size();
043    final double[] latValues = new double[size];
044    final double[] lngValues = new double[size];
045    int i = 0;
046    for (Point3D p : points) {
047      latValues[i] = p.getX();
048      lngValues[i] = p.getY();
049      i++;
050    }
051    return new Voronoi(minDistanceBetweenSites).generateVoronoi(latValues, lngValues, minX, maxX, minY, maxY);
052  }
053}