From 7575605aaeb00060e2461d8056fd1c8c51dd8068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sat, 18 Nov 2017 13:53:40 +0100 Subject: [PATCH] refactor get_altitudes() --- src/c3nav/mapdata/models/geometry/level.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/c3nav/mapdata/models/geometry/level.py b/src/c3nav/mapdata/models/geometry/level.py index b405626c..e77d38e0 100644 --- a/src/c3nav/mapdata/models/geometry/level.py +++ b/src/c3nav/mapdata/models/geometry/level.py @@ -149,17 +149,8 @@ class AltitudeArea(LevelGeometryMixin, models.Model): if self.altitude2 is None: return np.full((points.shape[0], ), fill_value=float(self.altitude)) - a_to_p = points - np.array(self.point1) - a_to_b = np.array(self.point2) - np.array(self.point1) - - atb2 = (a_to_b**2).sum() - - atp_dot_atb = a_to_p[:, 0] * a_to_b[0] + a_to_p[:, 1] * a_to_b[1] - - distances = atp_dot_atb / atb2 - - distances = distances.clip(0, 1) - + slope = np.array(self.point2) - np.array(self.point1) + distances = np.sum(((points - np.array(self.point1)) * slope), axis=1) / (slope ** 2).sum().clip(0, 1) return self.altitude + distances*(self.altitude2-self.altitude) @classmethod