var polygon = new Polygon2<EIK>(args.Lines.First().Points.Select(p => new Point2d(p.X, p.Y)).ToArray());
if (polygon.IsClockWise) {
args.Lines.First().Points.Reverse();
polygon = new Polygon2<EIK>(args.Lines.First().Points.Select(p => new Point2d(p.X, p.Y)).ToArray());
}
var polygonWithHoles = new PolygonWithHoles2<EIK>(polygon);
foreach (var hole in args.Lines.Skip(1)) {
var polygonHole = new Polygon2<EIK>(hole.Points.Select(p => new Point2d(p.X, p.Y)).ToArray());
if (polygonHole.IsCounterClockWise) {
hole.Points.Reverse();
polygonHole = new Polygon2<EIK>(hole.Points.Select(p => new Point2d(p.X, p.Y)).ToArray());
}
polygonWithHoles.AddHole(polygonHole);
}
//The skeleton is return as a array of segments.
var skeleton = new List<Segment2d>();
instance.CheckInput = true;
instance.CreateInteriorSkeleton(polygonWithHoles, false, skeleton);
foreach (var segment in skeleton) {
Utils.AddToBmp(bmp, new Vector2[] {
new Vector2((float)segment.A.x, (float)segment.A.y),
new Vector2((float)segment.B.x, (float)segment.B.y)
}, Color.HotPink);