package com.bioxx.jmapgen.com.nodename.delaunay;
import java.util.Vector;
import com.bioxx.jmapgen.Point;
import com.bioxx.jmapgen.com.nodename.geom.LineSegment;
public class DelaunayUtil
{
public static Vector<LineSegment> delaunayLinesForEdges(Vector<Edge> edges)
{
Vector<LineSegment> segments = new Vector<LineSegment>();
for(int i = 0; i < edges.size(); i++)
{
segments.add(edges.get(i).delaunayLine());
}
return segments;
}
public static Vector<Edge> selectEdgesForSitePoint(Point coord, Vector<Edge> edgesToTest)
{
Vector<Edge> edges = new Vector<Edge>();
for(int i = 0; i < edges.size(); i++)
{
Edge e = edges.get(i);
if((e.getLeftSite() != null && e.getLeftSite().getCoord() == coord)
|| (e.getRightSite() != null && e.getRightSite().getCoord() == coord))
edges.add(edges.get(i));
}
return edges;
}
public static Vector<LineSegment> visibleLineSegments(Vector<Edge> edges)
{
Vector<LineSegment> segments = new Vector<LineSegment>();
for(int i = 0; i < edges.size(); i++)
{
Edge edge = edges.get(i);
if (edge.getVisible())
{
Point p1 = edge.getClippedEnds()[LR.LEFT.value];
Point p2 = edge.getClippedEnds()[LR.RIGHT.value];
segments.add(new LineSegment(p1, p2));
}
}
return segments;
}
public static void setAtPosition(Vector v, int index, Object value)
{
if(index >= v.size())
{
v.setSize(index+1);
}
v.set(index, value);
}
public static int unshiftArray(Vector v, Object value)
{
Vector n = new Vector();
n.add(value);
n.addAll(v);
return n.size();
}
public static Object getAtPosition(Vector v, int index)
{
if(index > v.size())
{
v.setSize(index+1);
}
try
{
return v.get(index);
}
catch(IndexOutOfBoundsException e)
{
return null;
}
}
// public static Vector<Edge> selectNonIntersectingEdges(BitmapData keepOutMask, Vector<Edge> edgesToTest):
// {
// if (keepOutMask == null)
// {
// return edgesToTest;
// }
//
// var zeroPoint:Point = new Point();
// return edgesToTest.filter(myTest);
//
// function myTest(edge:Edge, index:int, vector:Vector.<Edge>):Boolean
// {
// var delaunayLineBmp:BitmapData = edge.makeDelaunayLineBmp();
// var notIntersecting:Boolean = !(keepOutMask.hitTest(zeroPoint, 1, delaunayLineBmp, zeroPoint, 1));
// delaunayLineBmp.dispose();
// return notIntersecting;
// }
// }
}