returns the kind of CG_SEGMENT_INTERSECTION_TYPE behavior of lineseg 1 (constructed from p1 and p2) and lineseg 2 (constructed from q1 and q2)
- Parameters
-
| p1 | start point of first straight linesegment |
| p2 | end point of first straight linesegment |
| q1 | start point of second line segment |
| q2 | end point of second line segment |
- Returns
- a CG_SEGMENT_INTERSECTION_TYPE Returns one of SEG_ERROR = -1, SEG_NO_INTERSECTION = 0, SEG_COLINEAR = 1, SEG_CROSS_LEFT = 2, SEG_CROSS_RIGHT = 3,
Definition at line 388 of file lwalgorithm.c.
389{
390
391 int pq1, pq2, qp1, qp2;
392
393
395 {
397 }
398
399
402 if ((pq1>0 && pq2>0) || (pq1<0 && pq2<0))
403 {
405 }
406
407
410 if ( (qp1 > 0.0 && qp2 > 0.0) || (qp1 < 0.0 && qp2 < 0.0) )
411 {
413 }
414
415
416 if ( pq1 == 0.0 && pq2 == 0.0 && qp1 == 0.0 && qp2 == 0.0 )
417 {
419 }
420
421
422
423
424
425
426 LWDEBUGF(4,
"pq1=%d pq2=%d", pq1, pq2);
427 LWDEBUGF(4,
"qp1=%d qp2=%d", qp1, qp2);
428
429
430 if ( pq2 == 0 || qp2 == 0 )
431 {
433 }
434
435
436 if ( pq1 == 0 )
437 {
438 if ( pq2 > 0 )
440 else
442 }
443
444
445 if ( qp1 == 0 )
446 {
447 if ( pq1 < pq2 )
449 else
451 }
452
453
454 if ( pq1 < pq2 )
456 else
458
459
461}
static int lw_seg_interact(const POINT2D *p1, const POINT2D *p2, const POINT2D *q1, const POINT2D *q2)
int lw_segment_side(const POINT2D *p1, const POINT2D *p2, const POINT2D *q)
lw_segment_side()
#define LWDEBUGF(level, msg,...)
References lw_seg_interact(), lw_segment_side(), LWDEBUGF, SEG_COLINEAR, SEG_CROSS_LEFT, SEG_CROSS_RIGHT, SEG_ERROR, and SEG_NO_INTERSECTION.
Referenced by lwline_crossing_direction(), rect_leaf_node_intersects(), and test_lw_segment_intersects().