home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ledar34.zip / leda-r-3_4_tar / LEDA-3.4 / src / plane_alg / _float_balaban.c next >
C/C++ Source or Header  |  1996-09-03  |  1KB  |  50 lines

  1. /*******************************************************************************
  2. +
  3. +  LEDA 3.4
  4. +
  5. +  _float_balaban.c
  6. +
  7. +  This file is part of the LEDA research version (LEDA-R) that can be 
  8. +  used free of charge in academic research and teaching. Any commercial
  9. +  use of this software requires a license which is distributed by the
  10. +  LEDA Software GmbH, Postfach 151101, 66041 Saarbruecken, FRG
  11. +  (fax +49 681 31104).
  12. +
  13. +  Copyright (c) 1991-1996  by  Max-Planck-Institut fuer Informatik
  14. +  Im Stadtwald, 66123 Saarbruecken, Germany     
  15. +  All rights reserved.
  16. *******************************************************************************/
  17. #define NO_RAT_ALGORITHMS
  18. #include <LEDA/plane_alg.h>
  19.  
  20. int cmp_at_x(const segment& s1, const segment& s2, const point& x)
  21. {   // Precondition : s1.start() <= s1.end()    s2.start() <= s2.end()
  22.  
  23.   if (s1.is_vertical())
  24.      if (s2.is_vertical()) 
  25.         return 0;
  26.      else
  27.         return orientation(s2, x) >  0 ? 1 : -1;
  28.  
  29.   if(s2.is_vertical()) return orientation(s1, x) <= 0 ? 1 : -1;
  30.  
  31.   double s1yd = s2.dx()*(s1.dy()*(x.xcoord() - s1.xcoord1()) + 
  32.              s1.dx()*s1.ycoord1());
  33.  
  34.   double s2yd = s1.dx()*(s2.dy()*(x.xcoord() - s2.xcoord1()) + 
  35.              s2.dx()*s2.ycoord1());
  36.  
  37.   if( s1yd < s2yd ) return -1;
  38.   if( s1yd > s2yd ) return  1;
  39.   return (orientation( s1, x ) > 0) ? cmp_slopes(s1, s2) : -cmp_slopes(s1, s2);
  40. }
  41.  
  42.  
  43. typedef point      POINT;
  44. typedef segment    SEGMENT;
  45.  
  46. #define STAIRCASE   float_stair_case
  47.  
  48. #include "balaban.c"
  49.