def at_y(self, y): v0 = self[0] v1 = self[1] if v1 == v0: return 0.5 t0 = (y - v0) / (v1 - v0) if 1: from solve_cubic_ext import solve_cubic tc = solve_cubic(t0, y, *self.points_y) #assert abs(self[tc]-y)<1e-10,`abs(self[tc]-y),tc,self[tc],y,t0,self[t0]` else: r = numpy.real_if_close(self._solve_cubic(y, *self.points_y), tol=1e5) tc = r[abs(r - t0).argmin()] if isinstance(tc, complex): tc = tc.real elif isinstance(tc, float): pass else: raise NotImplementedError( ` tc, type(tc) `) #assert abs(tc-t)<1e-10,`t0,tc,t,self[tc], self[t],y` return tc
def at_y(self, y): dP1, dP2, P1, P2 = self.points_y from solve_cubic_ext import solve_cubic y0 = self[0] y1 = self[1] t0 = (y - y0) / (y1 - y0) tc = solve_cubic(t0, y, *self.points_y) return tc
def at_y(self, y): dP1, dP2, P1, P2 = self.points_y from solve_cubic_ext import solve_cubic y0 = self[0] y1 = self[1] t0 = (y-y0)/(y1-y0) tc = solve_cubic(t0, y, *self.points_y) return tc
def at_y(self, y): v0 = self[0] v1 = self[1] if v1==v0: return 0.5 t0 = (y-v0)/(v1-v0) if 1: from solve_cubic_ext import solve_cubic tc = solve_cubic(t0, y, *self.points_y) #assert abs(self[tc]-y)<1e-10,`abs(self[tc]-y),tc,self[tc],y,t0,self[t0]` else: r = numpy.real_if_close(self._solve_cubic(y, *self.points_y), tol=1e5) tc = r[abs(r-t0).argmin()] if isinstance (tc, complex): tc = tc.real elif isinstance (tc, float): pass else: raise NotImplementedError (`tc, type(tc)`) #assert abs(tc-t)<1e-10,`t0,tc,t,self[tc], self[t],y` return tc