Source code for ddg.math.parametrizations.discrete_confocal3d

import numpy as np
from scipy.special import gamma


[docs]def discrete_confocal_coordinates_gamma(a, b, c): """a > b > c""" intervals = [[-a, -b], [-b, -c], [-c, np.inf]] def fct(n1, n2, n3, a=a, b=b, c=c): A = 1 / (np.sqrt(a - b - 0.5) * np.sqrt(a - c - 1)) B = 1 / (np.sqrt(a - b - 0.5) * np.sqrt(b - c - 0.5)) C = 1 / (np.sqrt(a - c - 1) * np.sqrt(b - c - 0.5)) def f1(n1, n2, n3, a=a): return ( A * (gamma(n1 + a + 0.5) / gamma(n1 + a)) * (gamma(n2 + a) / gamma(n2 + a - 0.5)) * (gamma(n3 + a - 0.5) / gamma(n3 + a - 1.0)) ) def f2(n1, n2, n3, b=b): return ( B * (gamma(-n1 - b + 0.5) / gamma(-n1 - b)) * (gamma(n2 + b + 0.5) / gamma(n2 + b)) * (gamma(n3 + b) / gamma(n3 + b - 0.5)) ) def f3(n1, n2, n3, c=c): return ( C * (gamma(-n1 - c) / gamma(-n1 - c - 0.5)) * (gamma(-n2 - c + 0.5) / gamma(-n2 - c)) * (gamma(n3 + c + 0.5) / gamma(n3 + c)) ) return np.array((f1(n1, n2, n3), f2(n1, n2, n3), f3(n1, n2, n3))) return (fct, intervals)