Geometry: Update guidelines computation.

* src/Model/Geometry/Reach.py (compute_guidelines): Now return complete and incomplete guidelines names.
This commit is contained in:
Pierre-Antoine Rouby committed 2023-04-17 11:59:28 +02:00
1 parent d22ab3bbd7
commit 634d0a4194
3 files changed
+73 -70

No files matched your search

-2
View File
@@ -227,9 +227,7 @@ class ProfileXYZ(Profile):
station_i = (normalized_direction_vec[0] * xi +
normalized_direction_vec[1] * yi)
station.append(station_i)
ret = np.array(station)
constant = ret[index_first_named_point]
elif first_named_point is None:
vector = Vector1d(first_point_not_nan,
+17 -11
View File
@@ -166,9 +166,11 @@ class Reach:
# Guidelines
def _compute_guidelines_cache(self, guide_set, named_points):
def _compute_guidelines_cache(self, guide_set, named_points,
complete, incomplete):
# Reset guide lines cache
self._guidelines = {}
self._guidelines_is_valid = len(incomplete) == 0
# Make a list of point for each guideline
for guide in guide_set:
@@ -190,7 +192,7 @@ class Reach:
"""Compute reach guideline and check if is valid for all profiles
Returns:
True if all guide line is valid
Tuple of complete and incomplete guidelines name.
"""
# Get all point contains into a guideline
named_points = [profile.named_points() for profile in self._profiles]
@@ -207,20 +209,24 @@ class Reach:
points_name
)
# All guide line is valid
is_ok = reduce(
bool.__and__,
map(
lambda l: len(set(l).symmetric_difference(guide_set)) == 0,
points_name
# Get incomplete guideline
incomplete = set(
reduce(
lambda acc, h: acc[1] + h[1],
map(
lambda l: list(set(l).symmetric_difference(guide_set)),
points_name
)
)
)
self._guidelines_is_valid = is_ok
complete = guide_set - incomplete
# Compute guideline and put data in cache
self._compute_guidelines_cache(guide_set, named_points)
self._compute_guidelines_cache(guide_set, named_points,
complete, incomplete)
return is_ok
return (complete, incomplete)
def _map_guidelines_points(self, func):
return list(