Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. USING_NS_CC;
  2.  
  3. std::vector<p2t::Triangle*> TriangleHelper::getTriangles(Shape shape) {
  4.  
  5.     std::vector<p2t::Point*> polyline;
  6.  
  7.     for(int i = 0; i < shape.pointsCount; i++) {
  8.         polyline.push_back(new p2t::Point(shape.coordinates[i][0], shape.coordinates[i][1]));
  9.     }
  10.  
  11.     p2t::CDT cdt(polyline);
  12.     cdt.Triangulate();
  13.  
  14.     return cdt.GetTriangles();
  15. }
  16.  
  17. TriangulatedShape* TriangleHelper::getTriangulatedShapes(Shape* shapes, int count) {
  18.  
  19.     //TriangulatedShape * triangulatedShapes = (TriangulatedShape*) malloc(count * sizeof(TriangulatedShape));
  20.     TriangulatedShape triangulatedShapes[count];
  21.  
  22.     for (int i = 0; i < count; i++) {
  23.  
  24.         Shape shape = shapes[i];
  25.  
  26.         std::vector<p2t::Triangle*> triangles = TriangleHelper::getTriangles(shape);
  27.  
  28.         int trianglesCounter = 0;
  29.         for (p2t::Triangle *tri : triangles) {
  30.             const p2t::Point &p1 = *tri->GetPoint(0);
  31.             const p2t::Point &p2 = *tri->GetPoint(1);
  32.             const p2t::Point &p3 = *tri->GetPoint(2);
  33.  
  34.             //triangulatedShapes[i].triangles[trianglesCounter][0] = Vec2(p1.x, p1.y);
  35.             //triangulatedShapes[i].triangles[trianglesCounter][1] = Vec2(p2.x, p2.y);
  36.             //triangulatedShapes[i].triangles[trianglesCounter][2] = Vec2(p3.x, p3.y);
  37.  
  38.             trianglesCounter++;
  39.         }
  40.  
  41.         triangulatedShapes[i].color = shape.color;
  42.         triangulatedShapes[i].type = shape.type;
  43.         triangulatedShapes[i].trianglesCount = triangles.size();
  44.  
  45.         std::vector<p2t::Triangle*>().swap(triangles);
  46.     }
  47.  
  48.     return triangulatedShapes;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement