def Dini(a=1, b=1, name="Dini's surface"): r""" Return Dini's surface, with parametrization .. MATH:: \begin{aligned} x(u, v) & = a \cos(u)\sin(v); \\ y(u, v) & = a \sin(u)\sin(v); \\ z(u, v) & = u + \log(\tan(v/2)) + \cos(v). \end{aligned} INPUT: - ``a, b`` -- surface parameters. - ``name`` -- string. Name of the surface. For more information, see :wikipedia:`Dini%27s_surface`. EXAMPLES:: sage: dini = surfaces.Dini(a=3, b=4); dini Parametrized surface ('Dini's surface') with equation (3*cos(u)*sin(v), 3*sin(u)*sin(v), 4*u + 3*cos(v) + 3*log(tan(1/2*v))) sage: dini.plot() Graphics3d Object """ u, v = var('u, v') dini_eq = [ a * cos(u) * sin(v), a * sin(u) * sin(v), a * (cos(v) + log(tan(v / 2))) + b * u ] coords = ((u, 0, 2 * pi), (v, 0, 2 * pi)) return ParametrizedSurface3D(dini_eq, coords, name)
def cmp_ir(self,z): """ returns -1 for left, 0 for in, and 1 for right from initial region cut line is on the north ray from L. """ L = self.L x0 = self.x0 if x0 > 0.5: if real(z) > real(L) and abs(z) < abs(L): return 0 if real(z) < real(L): return -1 if real(z) > real(L): return 1 else: if imag(z) > imag(L): if real(z) > real(L): return 1 if real(z) < real(L): return -1 if real(z) < real(L) and real(z) > log(real(L)) + log(sqrt(1+tan(imag(z))**2)): return 0 if real(z) > real(L): return 1 if real(z) < real(L): return -1
def Dini(a=1, b=1, name="Dini's surface"): r""" Returns Dini's surface, with parametrization .. MATH:: \begin{aligned} x(u, v) & = a \cos(u)\sin(v); \\ y(u, v) & = a \sin(u)\sin(v); \\ z(u, v) & = u + \log(\tan(v/2)) + \cos(v). \end{aligned} INPUT: - ``a, b`` -- surface parameters. - ``name`` -- string. Name of the surface. EXAMPLES:: sage: dini = surfaces.Dini(a=3, b=4); dini Parametrized surface ('Dini's surface') with equation (3*cos(u)*sin(v), 3*sin(u)*sin(v), 4*u + 3*cos(v) + 3*log(tan(1/2*v))) sage: dini.plot() # not tested -- known bug (see #10132) """ u, v = var('u, v') dini_eq = [a*cos(u)*sin(v), a*sin(u)*sin(v), a*(cos(v) + log(tan(v/2))) + b*u] coords = ((u, 0, 2*pi), (v, 0, 2*pi)) return ParametrizedSurface3D(dini_eq, coords, name)
def cmp_ir(self,z): """ returns -1 for left, 0 for in, and 1 for right from initial region cut line is on the north ray from pfp. Works only for real x0. """ pfp = self.pfp x0 = self.x0 if x0 > 0.5: print z,abs(z) if real(z) >= real(pfp) and abs(z) < abs(pfp): return 0 if real(z) < real(pfp): return -1 if real(z) > real(pfp): return 1 else: if imag(z) > imag(pfp): if real(z) > real(pfp): return 1 if real(z) < real(pfp): return -1 if real(z) < real(pfp) and real(z) > log(real(pfp)) + log(sqrt(1+tan(imag(z))**2)): return 0 if real(z) > real(pfp): return 1 if real(z) < real(pfp): return -1
def Dini(a=1, b=1, name="Dini's surface"): r""" Returns Dini's surface, with parametrization .. MATH:: \begin{aligned} x(u, v) & = a \cos(u)\sin(v); \\ y(u, v) & = a \sin(u)\sin(v); \\ z(u, v) & = u + \log(\tan(v/2)) + \cos(v). \end{aligned} INPUT: - ``a, b`` -- surface parameters. - ``name`` -- string. Name of the surface. EXAMPLES:: sage: dini = surfaces.Dini(a=3, b=4); dini Parametrized surface ('Dini's surface') with equation (3*cos(u)*sin(v), 3*sin(u)*sin(v), 4*u + 3*cos(v) + 3*log(tan(1/2*v))) sage: dini.plot() # not tested -- known bug (see #10132) """ u, v = var("u, v") dini_eq = [a * cos(u) * sin(v), a * sin(u) * sin(v), a * (cos(v) + log(tan(v / 2))) + b * u] coords = ((u, 0, 2 * pi), (v, 0, 2 * pi)) return ParametrizedSurface3D(dini_eq, coords, name)