ddg.datastructures.nets.net_generators.quadrics module

Parametrizations of quadrics.

A note on numerical accuracy: Due to the exponential growth of cosh and sinh, the relation cosh(t) ** 2 - sinh(t) ** 2 = 1 Can break earlier than perhaps expected. Here is the maximum error of this relation for some randomly sampled parameter values, which should be taken into account when choosing tolerances:

Parameter value

Approx. error

Approx. size of cosh(t)

0 < t < 1

1e-15

1e2

1 < t < 2

1e-15

1e2

2 < t < 3

1e-14

1e3

3 < t < 4

1e-13

1e3

4 < t < 5

1e-12

1e4

5 < t < 6

1e-11

1e4

6 < t < 7

1e-10

1e4

7 < t < 8

1e-9

1e5

8 < t < 9

1e-9

1e5

9 < t < 10

1e-8

1e6

10 < t < 11

1e-7

1e6

11 < t < 12

1e-6

1e7

12 < t < 13

1e-5

1e7

13 < t < 14

1e-4

1e8

14 < t < 15

1e-3

1e8

15 < t < 16

1e-3

1e8

16 < t < 17

1e-2

1e9

17 < t < 18

1e-1

1e9

18 < t < 19

1e0

1e10

19 < t < 20

1e1

1e10

ddg.datastructures.nets.net_generators.quadrics.two_points(name='TwoPoints')[source]

x**2 == 1

ddg.datastructures.nets.net_generators.quadrics.circle(name='Ellipse')[source]

x**2 + y**2 == 1

ddg.datastructures.nets.net_generators.quadrics.hyperbola(rot=False, name='Hyperbola')[source]

x**2 - y**2 == -1

ddg.datastructures.nets.net_generators.quadrics.linepair(name='ParallelLines')[source]

x**2 == 1

ddg.datastructures.nets.net_generators.quadrics.interline(name='IntersectingLines')[source]

x**2 - y**2 == 0

ddg.datastructures.nets.net_generators.quadrics.cline(rot=False, name='Line')[source]

x**2 == 0

ddg.datastructures.nets.net_generators.quadrics.parabola(name='Parabola')[source]

x**2 + 2*y == 0

ddg.datastructures.nets.net_generators.quadrics.sphere(axis=2, name='Ellipsoid')[source]

x**2 + y**2 + z**2 == 1

ddg.datastructures.nets.net_generators.quadrics.hyperboloid_one_sheeted(axis=2, name='HyperboloidOneSheeted')[source]

x**2 + y**2 - z**2 == 1

ddg.datastructures.nets.net_generators.quadrics.hyperboloid_two_sheeted(axis=2, name='HyperboloidTwoSheeted')[source]

x**2 + y**2 - z**2 == -1

ddg.datastructures.nets.net_generators.quadrics.paraboloid_elliptic(axis=2, name='ParaboloidElliptic')[source]

x**2 + y**2 + 2*z == 0

ddg.datastructures.nets.net_generators.quadrics.paraboloid_hyperbolic(axis=2, name='ParaboloidHyperbolic')[source]

x**2 - y**2 + 2*z == 0

ddg.datastructures.nets.net_generators.quadrics.cylinder_elliptic(axis=2, name='CylinderElliptic')[source]

x**2 + y**2 == 1

ddg.datastructures.nets.net_generators.quadrics.cylinder_hyperbolic(axis=2, rot=False, name='CylinderHyperbolic')[source]

x**2 - y**2 == 1

ddg.datastructures.nets.net_generators.quadrics.cylinder_parabolic(axis=1, name='CylinderParabolic')[source]

x**2 + 2*z == 0

ddg.datastructures.nets.net_generators.quadrics.cone(axis=2, name='Cone')[source]

x**2 + y**2 - z**2 == 0

ddg.datastructures.nets.net_generators.quadrics.line(axis=2, name='Line')[source]

x**2 + y**2 == 0

ddg.datastructures.nets.net_generators.quadrics.planes_intersecting(axis=2, name='Planes')[source]

x**2 - y**2 == 0

ddg.datastructures.nets.net_generators.quadrics.planes_parallel(axis=0, name='PlanesParallel')[source]

x**2 = 1

ddg.datastructures.nets.net_generators.quadrics.plane(axis=0, name='Plane')[source]

double x**2 = 0, or single 2*x == 0