algorithms-for-computing-li.../src/main/java/Model/DoublyConnectedEdgeList.java

86 lines
2.0 KiB
Java

package Model;
import java.util.LinkedList;
/**
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
*
* @Author: Armin Wolf
* @Email: a_wolf28@uni-muenster.de
* @Date: 30.05.2017.
*/
public class DoublyConnectedEdgeList {
private LinkedList<Node> nodes;
private LinkedList<Edge> edges;
private LinkedList<Face> faces;
public DoublyConnectedEdgeList(){
this.nodes = new LinkedList<>();
this.edges = new LinkedList<>();
this.faces = new LinkedList<>();
}
public Node createNode(Coordinates point, String id){
Node node = new Node();
node.setCoordinates(point);
node.setID(id);
return node;
}
public Edge createEdge(Node source, Node destination, String id){
Edge edge = new Edge();
Edge twin = new Edge();
edge.setOrigin(source);
edge.setID(id);
twin.setOrigin(destination);
twin.setID("#"+id);
source.setIncidentEdge(edge);
destination.setIncidentEdge(twin);
return edge;
}
public Face createFace(Edge outerComponent, Edge innerComponent, String id){
Face face = new Face();
face.setOuterComponent(outerComponent);
face.setID(id);
Edge tempEdge;
if (!outerComponent.equals(null)){
tempEdge = outerComponent;
do {
tempEdge.setIncidentFace(face);
tempEdge = tempEdge.getNext();
} while (!tempEdge.equals(outerComponent));
}
if (!innerComponent.equals(null)){
LinkedList<Edge> componentlist = face.getInnerComponents();
componentlist.add(innerComponent);
tempEdge = innerComponent;
do {
tempEdge.setIncidentFace(face);
tempEdge = tempEdge.getNext();
} while (!tempEdge.equals(innerComponent));
}
return null;
}
public void createConnection(Edge edge, Edge pred){
edge.setPrev(pred);
pred.setNext(edge);
}
}