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 32 #ifndef CDT_H 33 #define CDT_H 34 35 #include "advancing_front.h" 36 #include "sweep_context.h" 37 #include "sweep.h" 38 39 /** 40 * 41 * @author Mason Green <mason.green@gmail.com> 42 * 43 */ 44 45 namespace p2t { 46 47 class CDT 48 { 49 public: 50 51 /** 52 * Constructor - add polyline with non repeating points 53 * 54 * @param polyline 55 */ 56 CDT(const std::vector<Point*>& polyline); 57 58 /** 59 * Destructor - clean up memory 60 */ 61 ~CDT(); 62 63 /** 64 * Add a hole 65 * 66 * @param polyline 67 */ 68 void AddHole(const std::vector<Point*>& polyline); 69 70 /** 71 * Add a steiner point 72 * 73 * @param point 74 */ 75 void AddPoint(Point* point); 76 77 /** 78 * Triangulate - do this AFTER you've added the polyline, holes, and Steiner points 79 */ 80 void Triangulate(); 81 82 /** 83 * Get CDT triangles 84 */ 85 std::vector<Triangle*> GetTriangles(); 86 87 /** 88 * Get triangle map 89 */ 90 std::list<Triangle*> GetMap(); 91 92 private: 93 94 /** 95 * Internals 96 */ 97 98 SweepContext* sweep_context_; 99 Sweep* sweep_; 100 101 }; 102 103 } 104 105 #endif 106