package org.jzy3d.maths;

import java.util.Deque;
import java.util.List;

import org.jzy3d.maths.algorithms.convexhull.ConvexHullFunction;
import org.jzy3d.maths.algorithms.convexhull.GrahamScan;

public class ConvexHull {
	public static Polygon2d hull(List cell){
		
		Deque hull = ConvexHull.build2d(cell);
        Polygon2d out = new Polygon2d(hull.size());
		while (!hull.isEmpty()) {
		    Coord2d p = hull.pop();
        	out.add( p);
        }
		return out;
	}
	
	public static Deque build2d(List input2d){
		int np = input2d.size();		
		Coord2d[] data = new Coord2d[ np ];		
		for (int i = 0; i < data.length; i++) {
			data[i] = asPoint2f( input2d.get(i) );
		}
		return f.getConvexHull( data );
	}
	
	public static Deque build2d(PolygonArray input2d){
		int np = input2d.length();		
		Coord2d[] data = new Coord2d[ np ];
		for (int i = 0; i < np; i++) {
			data[i] = new Coord2d(input2d.x[i], input2d.y[i]);
		}
		return f.getConvexHull( data );
	}
	
	protected static Coord2d asPoint2f(Coord3d c){
		return new Coord2d(c.x, c.y);
	}
	
	protected static ConvexHullFunction f = new GrahamScan();//new JarvisMarch();
}

 

Ads help maintain this website.