瀏覽代碼

Merge pull request #83434 from Chubercik/optimize_triangulate_delaunay

Update `triangulate_delaunay()` to avoid needless reallocations
Rémi Verschelde 1 年之前
父節點
當前提交
14913f178b
共有 1 個文件被更改,包括 5 次插入3 次删除
  1. 5 3
      core/math/geometry_2d.h

+ 5 - 3
core/math/geometry_2d.h

@@ -306,10 +306,12 @@ public:
 		Vector<Delaunay2D::Triangle> tr = Delaunay2D::triangulate(p_points);
 		Vector<int> triangles;
 
+		triangles.resize(3 * tr.size());
+		int *ptr = triangles.ptrw();
 		for (int i = 0; i < tr.size(); i++) {
-			triangles.push_back(tr[i].points[0]);
-			triangles.push_back(tr[i].points[1]);
-			triangles.push_back(tr[i].points[2]);
+			*ptr++ = tr[i].points[0];
+			*ptr++ = tr[i].points[1];
+			*ptr++ = tr[i].points[2];
 		}
 		return triangles;
 	}