void ProcessEdge(Node n, Node.weightedEdge e, Dictionary <double, Node.weightedEdge> leftSector, Dictionary <double, Node.weightedEdge> rightSector) { Segment.Vector v0 = new Segment.Vector(); v0.x = n.coordinates.position.longitude; v0.y = n.coordinates.position.latitude; Segment.Vector v1 = new Segment.Vector(); v1.x = e.neighbour.coordinates.position.longitude; v1.y = e.neighbour.coordinates.position.latitude; Segment seg = new Segment(v0, v1); if (v0.x > v1.x) { AddToSector(leftSector, seg.directionNr, e); } else if (v0.x < v1.x) { AddToSector(rightSector, seg.directionNr, e); } else if (v0.y < v1.y) { verticalEdges[0] = e; } else { verticalEdges[1] = e; } }
public Segment(Node n0, Node n1) { Segment.Vector a = new Segment.Vector(); a.x = n0.coordinates.position.longitude; a.y = n0.coordinates.position.latitude; Segment.Vector b = new Segment.Vector(); b.x = n1.coordinates.position.longitude; b.y = n1.coordinates.position.latitude; SetEnds(a, b); }
private void CreateEventsFromEdges(Node n, Node.weightedEdge e) { if (!n.inside) { return; } Segment.Vector v0 = new Segment.Vector(); v0.x = n.coordinates.position.longitude; v0.y = n.coordinates.position.latitude; Segment.Vector v1 = new Segment.Vector(); v1.x = e.neighbour.coordinates.position.longitude; v1.y = e.neighbour.coordinates.position.latitude; Segment s = new Segment(v0, v1); SegmentEvent eventStart = new SegmentEvent(SegmentEvent.type.Start, s.upperEnd, s); eventStart.nid0 = n.id; eventStart.nid1 = e.neighbour.id; if (eventStart.nid0 == eventStart.nid1) { return; } AddEvent(eventStart); }
void Init(type eventT, Segment.Vector coord, Segment seg0) { eventType = eventT; coordinate = coord; s0 = seg0; }
public SegmentEvent(type eventT, Segment.Vector coord, Segment seg0, Segment seg1) { Init(eventT, coord, seg0); s1 = seg1; }