home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / c / library / dos / diverses / leda / incl / segment_.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-11-15  |  1.9 KB  |  73 lines

  1. /*******************************************************************************
  2. +
  3. +  LEDA  2.1.1                                                 11-15-1991
  4. +
  5. +
  6. +  segment_set.h
  7. +
  8. +
  9. +  Copyright (c) 1991  by  Max-Planck-Institut fuer Informatik
  10. +  Im Stadtwald, 6600 Saarbruecken, FRG     
  11. +  All rights reserved.
  12. *******************************************************************************/
  13.  
  14.  
  15.  
  16. #ifndef SEGMENT_SET_H
  17. #define SEGMENT_SET_H
  18.  
  19. #include <LEDA/seg_tree.h>
  20. #include <LEDA/plane.h>
  21.  
  22. typedef seg_tree_item seg_item;
  23.  
  24. declare(list,seg_item)
  25.  
  26. declare3(segment_tree,real,real,ent)
  27.  
  28. //------------------------------------------------------------------------------
  29. // class SegmentSet: a dictionary for line segments  with a fixed orientation
  30. //------------------------------------------------------------------------------
  31.  
  32. struct SegmentSet : public segment_tree(real,real,ent) {
  33.  
  34. double alpha;           // orientation given by an angle
  35.  
  36. segment  key(seg_item);
  37.  
  38. seg_item insert(segment, ent);
  39. seg_item lookup(segment);
  40. void     del(segment);
  41.  
  42. list(seg_item)  intersection(segment);
  43. list(seg_item)  intersection(line);
  44.  
  45.  SegmentSet(double a=0)  { alpha =a; }
  46. ~SegmentSet()  {}
  47. };
  48.  
  49. #define forall_seg_items(i,S) forall_seg_tree_items(i,S)
  50.  
  51.  
  52. //------------------------------------------------------------------------------
  53. // class segment_set: generic SegmentSet
  54. //------------------------------------------------------------------------------
  55.  
  56. #define segment_set(itype) name2(itype,segment_set)
  57.  
  58. #define segment_setdeclare(itype)\
  59. \
  60. struct segment_set(itype) : public SegmentSet{\
  61. \
  62. itype    inf(seg_item it)               { return itype(SegmentSet::inf(it));  }\
  63. seg_item insert(segment s, itype i)     { return SegmentSet::insert(s,Copy(i));}\
  64. void     change_inf(seg_item it,itype i){ SegmentSet::change_inf(it,Copy(i)); }\
  65. \
  66. segment_set(itype)(double a=0) : SegmentSet(a) {}\
  67. ~segment_set(itype)()  {}\
  68. };
  69.  
  70.  
  71. #endif
  72.