// Path: kendzi-math-geometry/src/main/java/kendzi/math/geometry/polygon/PolygonList2d.java
// public class PolygonList2d {
// 
//     /**
//      * Points of polygon.
//      */
//     private List<Point2d> points;
// 
//     /**
//      * Create polygon from list of points.
//      *
//      * @param pPoints list of points
//      */
//     public PolygonList2d(List<Point2d> pPoints) {
//         this.points = pPoints;
//     }
// 
//     /**
//      * Create polygon from  points.
//      *
//      * @param pPoints points
//      */
//     public PolygonList2d(Point2d ... pPoints) {
//         List<Point2d> ret = new ArrayList<Point2d>(pPoints.length);
//         for(Point2d p : pPoints) {
//             ret.add(p);
//         }
// 
//         this.points = ret;
//     }
// 
//     /**
//      * Create empty polygon.
//      */
//     public PolygonList2d() {
//         this(new ArrayList<Point2d>());
//     }
// 
//     /**
//      * @return the points
//      */
//     public List<Point2d> getPoints() {
//         return this.points;
//     }
// 
//     /**
//      * @param pPoints the points to set
//      */
//     public void setPoints(List<Point2d> pPoints) {
//         this.points = pPoints;
//     }
// 
// 
// 
// 
//     public void union(PolygonList2d pPolygon) {
//         // TODO !!!
//         //        suma
//         throw new RuntimeException("TODO");
//     }
//     public void difference(PolygonList2d pPolygon) {
//         // TODO !!!
//         //        roznica
//         throw new RuntimeException("TODO");
//     }
// 
//     public boolean inside(Point2d pPoint) {
//         // TODO !!!
//         throw new RuntimeException("TODO");
// 
//     }
// 
//     public boolean inside(Point2d pPoint, double epsilon) {
//         // TODO !!!
//         throw new RuntimeException("TODO");
//     }
// 
//     /**
//      * Reverse point order in list
//      * 
//      * @param polygon
//      * @return
//      */
//     public static List<Point2d> reverse(List<Point2d> polygon) {
//         return PolygonUtil.reverse(polygon);
//     }
// }
// 
// Path: kendzi-straight-skeleton/src/main/java/kendzi/math/geometry/skeleton/circular/Edge.java
// public class Edge extends CircularNode {
// 
//     private Point2d begin;
//     private Point2d end;
// 
//     private Ray2d bisectorPrevious;
//     private Ray2d bisectorNext;
// 
//     private LineLinear2d lineLinear2d;
// 
//     private Vector2d norm;
// 
//     public Edge(Point2d begin, Point2d end) {
//         this.begin = begin;
//         this.end = end;
// 
//         this.lineLinear2d = new LineLinear2d(begin, end);
// 
//         this.norm = new Vector2d(end);
//         this.norm.sub(begin);
//         this.norm.normalize();
// 
//     }
// 
//     @Override
//     public Edge next() {
//         return (Edge) super.next();
//     }
// 
//     @Override
//     public Edge previous() {
//         return (Edge) super.previous();
//     }
// 
//     public LineParametric2d getLineParametric2d() {
//         return new LineParametric2d(begin, norm);
//     }
// 
//     public LineLinear2d getLineLinear() {
//         return this.lineLinear2d;
//     }
// 
//     public Vector2d getNorm() {
//         return this.norm;
//     }
// 
//     /*
//      * (non-Javadoc)
//      * @see java.lang.Object#toString()
//      */
//     @Override
//     public String toString() {
//         return "EdgeEntry [p1=" + this.begin + ", p2=" + this.end + "]";
//     }
// 
//     public Point2d getBegin() {
//         return begin;
//     }
// 
//     public Point2d getEnd() {
//         return end;
//     }
// 
//     public Ray2d getBisectorPrevious() {
//         return bisectorPrevious;
//     }
// 
//     public Ray2d getBisectorNext() {
//         return bisectorNext;
//     }
// 
//     public LineLinear2d getLineLinear2d() {
//         return lineLinear2d;
//     }
// 
//     public void setBisectorPrevious(Ray2d bisectorPrevious) {
//         this.bisectorPrevious = bisectorPrevious;
//     }
// 
//     public void setBisectorNext(Ray2d bisectorNext) {
//         this.bisectorNext = bisectorNext;
//     }
// }


import kendzi.math.geometry.polygon.PolygonList2d;
import kendzi.math.geometry.skeleton.circular.Edge;
package kendzi.math.geometry.skeleton;


public class EdgeOutput {
    // int edgeNumber;
    // int polygonNumber
    private Edge edge;
// Path: kendzi-math-geometry/src/main/java/kendzi/math/geometry/polygon/PolygonList2d.java
// public class PolygonList2d {
// 
//     /**
//      * Points of polygon.
//      */
//     private List<Point2d> points;
// 
//     /**
//      * Create polygon from list of points.
//      *
//      * @param pPoints list of points
//      */
//     public PolygonList2d(List<Point2d> pPoints) {
//         this.points = pPoints;
//     }
// 
//     /**
//      * Create polygon from  points.
//      *
//      * @param pPoints points
//      */
//     public PolygonList2d(Point2d ... pPoints) {
//         List<Point2d> ret = new ArrayList<Point2d>(pPoints.length);
//         for(Point2d p : pPoints) {
//             ret.add(p);
//         }
// 
//         this.points = ret;
//     }
// 
//     /**
//      * Create empty polygon.
//      */
//     public PolygonList2d() {
//         this(new ArrayList<Point2d>());
//     }
// 
//     /**
//      * @return the points
//      */
//     public List<Point2d> getPoints() {
//         return this.points;
//     }
// 
//     /**
//      * @param pPoints the points to set
//      */
//     public void setPoints(List<Point2d> pPoints) {
//         this.points = pPoints;
//     }
// 
// 
// 
// 
//     public void union(PolygonList2d pPolygon) {
//         // TODO !!!
//         //        suma
//         throw new RuntimeException("TODO");
//     }
//     public void difference(PolygonList2d pPolygon) {
//         // TODO !!!
//         //        roznica
//         throw new RuntimeException("TODO");
//     }
// 
//     public boolean inside(Point2d pPoint) {
//         // TODO !!!
//         throw new RuntimeException("TODO");
// 
//     }
// 
//     public boolean inside(Point2d pPoint, double epsilon) {
//         // TODO !!!
//         throw new RuntimeException("TODO");
//     }
// 
//     /**
//      * Reverse point order in list
//      * 
//      * @param polygon
//      * @return
//      */
//     public static List<Point2d> reverse(List<Point2d> polygon) {
//         return PolygonUtil.reverse(polygon);
//     }
// }
// 
// Path: kendzi-straight-skeleton/src/main/java/kendzi/math/geometry/skeleton/circular/Edge.java
// public class Edge extends CircularNode {
// 
//     private Point2d begin;
//     private Point2d end;
// 
//     private Ray2d bisectorPrevious;
//     private Ray2d bisectorNext;
// 
//     private LineLinear2d lineLinear2d;
// 
//     private Vector2d norm;
// 
//     public Edge(Point2d begin, Point2d end) {
//         this.begin = begin;
//         this.end = end;
// 
//         this.lineLinear2d = new LineLinear2d(begin, end);
// 
//         this.norm = new Vector2d(end);
//         this.norm.sub(begin);
//         this.norm.normalize();
// 
//     }
// 
//     @Override
//     public Edge next() {
//         return (Edge) super.next();
//     }
// 
//     @Override
//     public Edge previous() {
//         return (Edge) super.previous();
//     }
// 
//     public LineParametric2d getLineParametric2d() {
//         return new LineParametric2d(begin, norm);
//     }
// 
//     public LineLinear2d getLineLinear() {
//         return this.lineLinear2d;
//     }
// 
//     public Vector2d getNorm() {
//         return this.norm;
//     }
// 
//     /*
//      * (non-Javadoc)
//      * @see java.lang.Object#toString()
//      */
//     @Override
//     public String toString() {
//         return "EdgeEntry [p1=" + this.begin + ", p2=" + this.end + "]";
//     }
// 
//     public Point2d getBegin() {
//         return begin;
//     }
// 
//     public Point2d getEnd() {
//         return end;
//     }
// 
//     public Ray2d getBisectorPrevious() {
//         return bisectorPrevious;
//     }
// 
//     public Ray2d getBisectorNext() {
//         return bisectorNext;
//     }
// 
//     public LineLinear2d getLineLinear2d() {
//         return lineLinear2d;
//     }
// 
//     public void setBisectorPrevious(Ray2d bisectorPrevious) {
//         this.bisectorPrevious = bisectorPrevious;
//     }
// 
//     public void setBisectorNext(Ray2d bisectorNext) {
//         this.bisectorNext = bisectorNext;
//     }
// }


// Path: kendzi-straight-skeleton/src/main/java/kendzi/math/geometry/skeleton/EdgeOutput.java
import kendzi.math.geometry.polygon.PolygonList2d;
import kendzi.math.geometry.skeleton.circular.Edge;

package kendzi.math.geometry.skeleton;


public class EdgeOutput {
    // int edgeNumber;
    // int polygonNumber
    private Edge edge;
    private PolygonList2d polygon;