Skip to content

Commit ee3f893

Browse files
authored
選択範囲の境界上にある地物が消えることがある問題を修正 (#264)
1 parent 221e9a5 commit ee3f893

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/polygon_mesh/mesh_extractor.cpp

+19-3
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,36 @@ namespace {
3030
if (extent.contains(city_obj))
3131
return false;
3232
}
33-
3433
return true;
3534
}
3635

36+
/// extentsの幅と奥行きの長さを multiplier 倍にします。
37+
std::vector<geometry::Extent> extendExtents(const std::vector<geometry::Extent>& src_extents, float multiplier) {
38+
auto result = std::vector<geometry::Extent>();
39+
40+
for (const auto& src_extent : src_extents) {
41+
const auto center = src_extent.centerPoint();
42+
const auto prev_min = src_extent.min;
43+
const auto prev_max = src_extent.max;
44+
auto next_min = center + (prev_min - center) * multiplier;
45+
auto next_max = center + (prev_max - center) * multiplier;
46+
result.emplace_back(next_min, next_max);
47+
}
48+
return result;
49+
}
50+
3751
void extractInner(
3852
Model& out_model, const CityModel& city_model,
3953
const MeshExtractOptions& options,
40-
const std::vector<geometry::Extent>& extents) {
54+
const std::vector<geometry::Extent>& extents_before_adjust) {
4155

4256
if (options.max_lod < options.min_lod) throw std::logic_error("Invalid LOD range.");
4357

4458
const auto geo_reference = geometry::GeoReference(options.coordinate_zone_id, options.reference_point, options.unit_scale, options.mesh_axes);
4559

60+
// 範囲の境界上にある地物を取り逃さないように、範囲を少し広げます。
61+
auto extents = extendExtents(extents_before_adjust, 1.2f);
62+
4663
// rootNode として LODノード を作ります。
4764
for (unsigned lod = options.min_lod; lod <= options.max_lod; lod++) {
4865
auto lod_node = Node("LOD" + std::to_string(lod));
@@ -188,7 +205,6 @@ namespace plateau::polygonMesh {
188205
const MeshExtractOptions& options,
189206
const std::vector<plateau::geometry::Extent>& extents) {
190207

191-
192208
extractInner(out_model, city_model, options, extents);
193209
}
194210

0 commit comments

Comments
 (0)