From a42ff54363766c38fe81002162791a41ae653bc6 Mon Sep 17 00:00:00 2001 From: Tobias Knerr Date: Wed, 21 Aug 2024 13:43:22 +0200 Subject: [PATCH] Make constraint enforcer robust against null ele values --- .../creation/SimpleEleConstraintEnforcer.java | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/osm2world/core/map_elevation/creation/SimpleEleConstraintEnforcer.java b/src/main/java/org/osm2world/core/map_elevation/creation/SimpleEleConstraintEnforcer.java index a420eb712..142b6bd5f 100644 --- a/src/main/java/org/osm2world/core/map_elevation/creation/SimpleEleConstraintEnforcer.java +++ b/src/main/java/org/osm2world/core/map_elevation/creation/SimpleEleConstraintEnforcer.java @@ -2,14 +2,7 @@ import static java.util.Arrays.asList; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import org.osm2world.core.map_elevation.data.EleConnector; @@ -158,13 +151,10 @@ public void enforceConstraints() { for (StiffConnectorSet stiffSet : stiffSetMap.values()) { - double averageEle = 0; - - for (EleConnector connector : stiffSet) { - averageEle += connector.getPosXYZ().y; - } - - averageEle /= stiffSet.size(); + double averageEle = stiffSet.connectors.stream() + .filter(it -> it.getPosXYZ() != null) + .mapToDouble(it -> it.getPosXYZ().y) + .average().orElse(0.0); for (EleConnector connector : stiffSet) { connector.setPosXYZ(connector.pos.xyz(averageEle)); @@ -181,10 +171,12 @@ public void enforceConstraints() { //TODO use clearing - switch (c.groundState) { - case ABOVE: c.setPosXYZ(c.getPosXYZ().addY(5)); break; - case BELOW: c.setPosXYZ(c.getPosXYZ().addY(-5)); break; - default: //stay at ground elevation + if (c.getPosXYZ() != null) { + switch (c.groundState) { + case ABOVE -> c.setPosXYZ(c.getPosXYZ().addY(5)); + case BELOW -> c.setPosXYZ(c.getPosXYZ().addY(-5)); + default -> { /* stay at ground elevation */ } + } } }