
    0-Ph                     (    d dl Zd dlmZ ddZd ZdS )    N)elliprg      ?r   r   Fc           	      .   | dk    s|dk    s|dk    rt          d          t          j        d         t          j        |         z  }t          j        t          j        | ||f          |z
            }t          j        t          j        | ||f         |z   dz             }t          d          D ]}||         ||         z
  dz  dk    r||xx         dz  cc<   t          j        ||         ||         ||                   }	d|	vr,||xx         t          j        |	|	dk                        z  cc<   t          j        |d         |d         |d         |d         |d         |d         |d         |d         |d         f         \  }
}}|sF|
t          |           z  dz  |t          |          z  dz  z   |t          |          z  dz  z   dk    }nD|
t          |           z  dz  |t          |          z  dz  z   |t          |          z  dz  z   dz
  }|S )a  Generate ellipsoid for given semi-axis lengths.

    The respective semi-axis lengths are given along three dimensions in
    Cartesian coordinates. Each dimension may use a different grid spacing.

    Parameters
    ----------
    a : float
        Length of semi-axis along x-axis.
    b : float
        Length of semi-axis along y-axis.
    c : float
        Length of semi-axis along z-axis.
    spacing : 3-tuple of floats
        Grid spacing in three spatial dimensions.
    levelset : bool
        If True, returns the level set for this ellipsoid (signed level
        set about zero, with positive denoting interior) as np.float64.
        False returns a binarized version of said level set.

    Returns
    -------
    ellipsoid : (M, N, P) array
        Ellipsoid centered in a correctly sized array for given `spacing`.
        Boolean dtype unless `levelset=True`, in which case a float array is
        returned with the level set above 0.0 representing the ellipsoid.

    r   &Parameters a, b, and c must all be > 0)   r   r   r         )

ValueErrornpr_ceilfloorrangearangemaxmgridfloat)abcspacinglevelsetoffsetlowhighdimnumxyzarrs                 S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/draw/draw3d.py	ellipsoidr$      s   : 	
QAFFQABBBU7^beGn,F '25Aq>/F*
+
+C8BE!Q'NV+a/00DQxx - -IC A%**HHHMHHHiC$s)WS\::C<<HHHs37|,,,HHH hAa71:%Aa71:%Aa71:%	'GAq!  TE!HH"a%((lq%88AaLQ;NNSTTE!HH"a%((lq%88AaLQ;NNRSSJ    c                     | dk    s|dk    s|dk    rt          d          dt          j        z  | z  |z  |z  }d|z  t          d| dz  z  d|dz  z  d|dz  z            z  }||fS )a  Calculate analytical volume and surface area of an ellipsoid.

    The surface area of an ellipsoid is given by

    .. math:: S=4\pi b c R_G\!\left(1, \frac{a^2}{b^2}, \frac{a^2}{c^2}\right)

    where :math:`R_G` is Carlson's completely symmetric elliptic integral of
    the second kind [1]_. The latter is implemented as
    :py:func:`scipy.special.elliprg`.

    Parameters
    ----------
    a : float
        Length of semi-axis along x-axis.
    b : float
        Length of semi-axis along y-axis.
    c : float
        Length of semi-axis along z-axis.

    Returns
    -------
    vol : float
        Calculated volume of ellipsoid.
    surf : float
        Calculated surface area of ellipsoid.

    References
    ----------
    .. [1] Paul Masson (2020). Surface Area of an Ellipsoid.
           https://analyticphysics.com/Mathematical%20Methods/Surface%20Area%20of%20an%20Ellipsoid.htm

    r   r   gUUUUUU?r	   r   r
   )r   r   pir   )r   r   r   volsurfs        r#   ellipsoid_statsr*   A   s    B 	
QAFFQABBB BE/A

!A
%C s7WQAXq1a4xQT:::D9r%   )r   F)numpyr   scipy.specialr   r$   r*    r%   r#   <module>r.      sQ        ! ! ! ! ! !9 9 9 9x* * * * *r%   