// 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/circular/Vertex.java
// public class Vertex extends CircularNode {
// 
//     private Point2d point;
// 
//     private double distance;
// 
//     private boolean processed;
// 
//     private Ray2d bisector;
// 
//     /**
//      * Previous edge.
//      */
//     public Edge previousEdge;
// 
//     /**
//      * Next edge.
//      */
//     public Edge nextEdge;
// 
//     public FaceNode leftFace;
// 
//     public FaceNode rightFace;
// 
//     public Vertex(Point2d point, double distance, Ray2d bisector, Edge previousEdge, Edge nextEdge) {
//         super();
//         this.point = point;
//         this.distance = distance;
//         this.bisector = bisector;
//         this.previousEdge = previousEdge;
//         this.nextEdge = nextEdge;
// 
//         processed = false;
//     }
// 
//     public Vertex() {
//         // TODO Auto-generated constructor stub
//     }
// 
//     /*
//      * (non-Javadoc)
//      * @see java.lang.Object#toString()
//      */
//     @Override
//     public String toString() {
//         return "VertexEntry [v=" + this.point + ", processed=" + this.processed + ", bisector=" + this.bisector
//                 + ", previousEdge=" + this.previousEdge + ", nextEdge=" + this.nextEdge;
//     }
// 
//     @Override
//     public Vertex next() {
//         return (Vertex) super.next();
//     }
// 
//     @Override
//     public Vertex previous() {
//         return (Vertex) super.previous();
//     }
// 
//     public Point2d getPoint() {
//         return point;
//     }
// 
//     public double getDistance() {
//         return distance;
//     }
// 
//     public boolean isProcessed() {
//         return processed;
//     }
// 
//     public Ray2d getBisector() {
//         return bisector;
//     }
// 
//     public Edge getPreviousEdge() {
//         return previousEdge;
//     }
// 
//     public Edge getNextEdge() {
//         return nextEdge;
//     }
// 
//     public FaceNode getLeftFace() {
//         return leftFace;
//     }
// 
//     public FaceNode getRightFace() {
//         return rightFace;
//     }
// 
//     public void setProcessed(boolean processed) {
//         this.processed = processed;
//     }
// 
//     @Deprecated
//     public void setBisector(Ray2d bisector) {
//         this.bisector = bisector;
//     }
// 
// }


import kendzi.math.geometry.skeleton.circular.Edge;
import kendzi.math.geometry.skeleton.circular.Vertex;
package kendzi.math.geometry.skeleton.events.chains;


public interface ChainEnds {

    public Edge getPreviousEdge();

    public Edge getNextEdge();

    public Vertex getPreviousVertex();

// 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/circular/Vertex.java
// public class Vertex extends CircularNode {
// 
//     private Point2d point;
// 
//     private double distance;
// 
//     private boolean processed;
// 
//     private Ray2d bisector;
// 
//     /**
//      * Previous edge.
//      */
//     public Edge previousEdge;
// 
//     /**
//      * Next edge.
//      */
//     public Edge nextEdge;
// 
//     public FaceNode leftFace;
// 
//     public FaceNode rightFace;
// 
//     public Vertex(Point2d point, double distance, Ray2d bisector, Edge previousEdge, Edge nextEdge) {
//         super();
//         this.point = point;
//         this.distance = distance;
//         this.bisector = bisector;
//         this.previousEdge = previousEdge;
//         this.nextEdge = nextEdge;
// 
//         processed = false;
//     }
// 
//     public Vertex() {
//         // TODO Auto-generated constructor stub
//     }
// 
//     /*
//      * (non-Javadoc)
//      * @see java.lang.Object#toString()
//      */
//     @Override
//     public String toString() {
//         return "VertexEntry [v=" + this.point + ", processed=" + this.processed + ", bisector=" + this.bisector
//                 + ", previousEdge=" + this.previousEdge + ", nextEdge=" + this.nextEdge;
//     }
// 
//     @Override
//     public Vertex next() {
//         return (Vertex) super.next();
//     }
// 
//     @Override
//     public Vertex previous() {
//         return (Vertex) super.previous();
//     }
// 
//     public Point2d getPoint() {
//         return point;
//     }
// 
//     public double getDistance() {
//         return distance;
//     }
// 
//     public boolean isProcessed() {
//         return processed;
//     }
// 
//     public Ray2d getBisector() {
//         return bisector;
//     }
// 
//     public Edge getPreviousEdge() {
//         return previousEdge;
//     }
// 
//     public Edge getNextEdge() {
//         return nextEdge;
//     }
// 
//     public FaceNode getLeftFace() {
//         return leftFace;
//     }
// 
//     public FaceNode getRightFace() {
//         return rightFace;
//     }
// 
//     public void setProcessed(boolean processed) {
//         this.processed = processed;
//     }
// 
//     @Deprecated
//     public void setBisector(Ray2d bisector) {
//         this.bisector = bisector;
//     }
// 
// }


// Path: kendzi-straight-skeleton/src/main/java/kendzi/math/geometry/skeleton/events/chains/ChainEnds.java
import kendzi.math.geometry.skeleton.circular.Edge;
import kendzi.math.geometry.skeleton.circular.Vertex;

package kendzi.math.geometry.skeleton.events.chains;


public interface ChainEnds {

    public Edge getPreviousEdge();

    public Edge getNextEdge();

    public Vertex getPreviousVertex();

    public Vertex getNextVertex();