AABB_2r::AABB_2r(const PointSet_3r &pointset) { rational minx, miny, maxx, maxy; minx = maxx = pointset.points()[0]->x(); miny = maxy = pointset.points()[0]->y(); for (auto point : pointset.points()) { minx = std::min(point->x(), minx); miny = std::min(point->y(), miny); maxx = std::max(point->x(), maxx); maxy = std::max(point->y(), maxy); } min_.set_x(minx); min_.set_y(miny); max_.set_x(maxx); max_.set_y(maxy); }
RegionalTerrain_3r DelaunayTerrain(const PointSet_3r& samples, IGeometryObserver* obs) { RegionalTerrain_3r terrain; terrain.AddObserver(obs); terrain.Initialize(AABB_2r(samples)); for (auto sample : samples.points()) { terrain.AddSample(*sample); } return terrain; }