+ if(asign1<0 && bsign1<0) {
+ // segment2 is completely to the left of segment1
+#ifndef DONT_REMEMBER_CROSSINGS
+ assert(0);
+#endif
+#ifdef DEBUG
+ fprintf(stderr, "[%d] doesn't intersect with [%d] because: [%d] is completely to the left of [%d]\n", s1->nr, s2->nr, s1->nr, s2->nr);
+#endif
+ return;
+ }
+ if(asign1>0 && bsign1>0) {
+ // segment2 is completely to the right of segment1
+#ifdef DEBUG
+ fprintf(stderr, "[%d] doesn't intersect with [%d] because: [%d] is completely to the left of [%d]\n", s1->nr, s2->nr, s2->nr, s1->nr);
+#endif
+ return;
+ }
+
+#ifdef DONT_REMEMBER_CROSSINGS
+ /* s2 crosses s1 from *left* to *right*. This is a crossing we already processed-
+ there's not way s2 would be to the left of s1 otherwise */
+ if(asign1<0 && bsign1>0) return;
+ if(asign2>0 && bsign2<0) return;
+#endif
+
+ assert(!(asign1<0 && bsign1>0));
+ assert(!(asign2>0 && bsign2<0));
+