cdt.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*
  2. * Poly2Tri Copyright (c) 2009-2010, Poly2Tri Contributors
  3. * http://code.google.com/p/poly2tri/
  4. *
  5. * All rights reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without modification,
  8. * are permitted provided that the following conditions are met:
  9. *
  10. * * Redistributions of source code must retain the above copyright notice,
  11. * this list of conditions and the following disclaimer.
  12. * * Redistributions in binary form must reproduce the above copyright notice,
  13. * this list of conditions and the following disclaimer in the documentation
  14. * and/or other materials provided with the distribution.
  15. * * Neither the name of Poly2Tri nor the names of its contributors may be
  16. * used to endorse or promote products derived from this software without specific
  17. * prior written permission.
  18. *
  19. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  20. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  21. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  22. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  23. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  24. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  25. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  26. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  27. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  28. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  29. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30. */
  31. #ifndef CDT_H
  32. #define CDT_H
  33. #include "advancing_front.h"
  34. #include "sweep_context.h"
  35. #include "sweep.h"
  36. /**
  37. *
  38. * @author Mason Green <mason.green@gmail.com>
  39. *
  40. */
  41. namespace p2t {
  42. class CDT
  43. {
  44. public:
  45. /**
  46. * Constructor - add polyline with non repeating points
  47. *
  48. * @param polyline
  49. */
  50. CDT(const std::vector<Point*>& polyline);
  51. /**
  52. * Destructor - clean up memory
  53. */
  54. ~CDT();
  55. /**
  56. * Add a hole
  57. *
  58. * @param polyline
  59. */
  60. void AddHole(const std::vector<Point*>& polyline);
  61. /**
  62. * Add a steiner point
  63. *
  64. * @param point
  65. */
  66. void AddPoint(Point* point);
  67. /**
  68. * Triangulate - do this AFTER you've added the polyline, holes, and Steiner points
  69. */
  70. void Triangulate();
  71. /**
  72. * Get CDT triangles
  73. */
  74. std::vector<Triangle*> GetTriangles();
  75. /**
  76. * Get triangle map
  77. */
  78. std::list<Triangle*> GetMap();
  79. private:
  80. /**
  81. * Internals
  82. */
  83. SweepContext* sweep_context_;
  84. Sweep* sweep_;
  85. };
  86. }
  87. #endif