Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
 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);
        }
Ejemplo n.º 4
0
 void Init(type eventT, Segment.Vector coord, Segment seg0)
 {
     eventType  = eventT;
     coordinate = coord;
     s0         = seg0;
 }
Ejemplo n.º 5
0
 public SegmentEvent(type eventT, Segment.Vector coord, Segment seg0, Segment seg1)
 {
     Init(eventT, coord, seg0);
     s1 = seg1;
 }