Advertisement
Guest User

Untitled

a guest
May 20th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.20 KB | None | 0 0
  1. while (!Q.isEmpty()) {
  2.             ExtPoint p = Q.poll();
  3.             //left point of segment
  4.             if (p.position == LEFT) {
  5.                 T.add(p.segment);
  6.                 //if intersect higher
  7.                 if (T.higher(p.segment) != null) {
  8.                     if (p.segment.color != T.higher(p.segment).color) {
  9.                         if (SegmentsIntersect(p.segment.start, p.segment.end, T.higher(p.segment).start, T.higher(p.segment).end)) {
  10.                             Q.add(CalculateIntersect(p.segment.start, p.segment.end, T.higher(p.segment).start, T.higher(p.segment).end, p.position, p.segment, T.higher(p.segment)));
  11.                         }
  12.                     }
  13.                 }
  14.  
  15.                 //if intersect lower
  16.                 if (T.lower(p.segment) != null) {
  17.                     if (p.segment.color != T.lower(p.segment).color) {
  18.                         if (SegmentsIntersect(p.segment.start, p.segment.end, T.lower(p.segment).start, T.lower(p.segment).end)) {
  19.                             Q.add(CalculateIntersect(p.segment.start, p.segment.end, T.lower(p.segment).start, T.lower(p.segment).end, p.position, p.segment, T.lower(p.segment)));
  20.                         }
  21.                     }
  22.                 }
  23.                 //right point of a segment
  24.             } else if (p.position == RIGHT) {
  25.                 if (T.higher(p.segment) != null && T.lower(p.segment) != null) {
  26.                     if (T.higher(p.segment).color != T.lower(p.segment).color) {
  27.                         if (SegmentsIntersect(T.higher(p.segment).start, T.higher(p.segment).end, T.lower(p.segment).start, T.lower(p.segment).end)) {
  28.                             ExtPoint myEt = CalculateIntersect(T.higher(p.segment).start, T.higher(p.segment).end, T.lower(p.segment).start, T.lower(p.segment).end, p.position, p.segment, T.lower(p.segment));
  29.                             if (!Q.contains(myEt)) Q.add(myEt);
  30.                         }
  31.                     }
  32.                 }
  33.                 T.remove(p.segment);
  34.             } else {
  35.                 //if its intersection
  36.                 count++;
  37.                 if (T.higher(p.segment) != null && T.lower(p.segment) != null) {
  38.                     //swap elements
  39.                     Segment s1 = T.higher(p.segment);
  40.                     Segment s2 = T.lower(p.segment);
  41.  
  42.                     T.remove(s1);
  43.                     T.remove(s2);
  44.  
  45.                     T.add(s1);
  46.                     T.add(s2);
  47.  
  48.  
  49.                     Segment segA = T.higher(s2);
  50.                     Segment segB = T.lower(s1);
  51.  
  52.                     if (SegmentsIntersect(s2.start, s2.end, segA.start, segA.end)) {
  53.                         ExtPoint myEt = CalculateIntersect(s2.start, s2.end, segA.start, segA.end, p.position, s2, segA);
  54.                         if (!Q.contains(myEt)) Q.add(myEt);
  55.                     }
  56.  
  57.                     if (SegmentsIntersect(s1.start, s1.end, segB.start, segB.end)) {
  58.                         ExtPoint myEt = CalculateIntersect(s1.start, s1.end, segB.start, segB.end, p.position, s1, segB);
  59.                         if (!Q.contains(myEt)) Q.add(myEt);
  60.                     }
  61.                     Q.remove(p);
  62.                 }
  63.  
  64.             }
  65.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement