diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index 41381a04..323fb9bc 100644 --- a/src/Model/Geometry/ProfileXYZ.py +++ b/src/Model/Geometry/ProfileXYZ.py @@ -881,25 +881,31 @@ class ProfileXYZ(Profile, SQLSubModel): # Interpolate points at river left side if (i_left > 0): - fact = (z - self.point(i_left).z) / (self.point(i_left - 1).z - - self.point(i_left).z) - x = self.point(i_left).x + fact * (self.point(i_left - 1).x - - self.point(i_left).x) - y = self.point(i_left).y + fact * (self.point(i_left - 1).y - - self.point(i_left).y) - pt_left = PointXYZ(x=x, y=y, z=z, name="wl_left") + if abs(self.point(i_left - 1).z - self.point(i_left).z) < 1e-20: + pt_left = self.point(i_left) + else: + fact = (z - self.point(i_left).z) / (self.point(i_left - 1).z + - self.point(i_left).z) + x = self.point(i_left).x + fact * (self.point(i_left - 1).x + - self.point(i_left).x) + y = self.point(i_left).y + fact * (self.point(i_left - 1).y + - self.point(i_left).y) + pt_left = PointXYZ(x=x, y=y, z=z, name="wl_left") else: pt_left = self.point(0) # Interpolate points at river right side if (i_right < self.number_points - 1): - fact = (z - self.point(i_right).z) / (self.point(i_right + 1).z - - self.point(i_right).z) - x = self.point(i_right).x + fact * (self.point(i_right + 1).x - - self.point(i_right).x) - y = self.point(i_right).y + fact * (self.point(i_right + 1).y - - self.point(i_right).y) - pt_right = PointXYZ(x=x, y=y, z=z, name="wl_right") + if abs(self.point(i_right + 1).z - self.point(i_right).z) < 1e-20: + pt_right = self.point(i_right) + else: + fact = (z - self.point(i_right).z) / \ + (self.point(i_right + 1).z - self.point(i_right).z) + x = self.point(i_right).x + fact * \ + (self.point(i_right + 1).x - self.point(i_right).x) + y = self.point(i_right).y + fact * \ + (self.point(i_right + 1).y - self.point(i_right).y) + pt_right = PointXYZ(x=x, y=y, z=z, name="wl_right") else: pt_right = self.point(self.number_points - 1)