
    9i                     (    S SK rS SKJr  SS jrS rg)    N)elliprgc           	         U S::  d  US::  d  US::  a  [        S5      e[        R                  S   [        R                  U   -  n[        R                  " [        R                  XU4   * U-
  5      n[        R                  " [        R                  XU4   U-   S-   5      n[        S5       Hj  nXx   Xh   -
  S-  S:X  a  Xh==   S-  ss'   [        R                  " Xh   Xx   X8   5      n	SU	;  d  ME  Xh==   [        R                  " XS:     5      -  ss'   Ml     [        R                  US   US   US   2US   US   US   2US   US   US   24   u  pnU(       d:  U
[        U 5      -  S-  U[        U5      -  S-  -   U[        U5      -  S-  -   S:*  nU$ U
[        U 5      -  S-  U[        U5      -  S-  -   U[        U5      -  S-  -   S-
  nU$ )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/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/draw/draw3d.py	ellipsoidr"      s   : 	
QAFQABBUU7^beeGn,F ''255q>/F*
+C88BEE!'NV+a/0DQxI A%*HMHii$)W\:C<Hs7|,,H  hhAa71:%Aa71:%Aa71:%	'GA! E!H"a%(lq%88AaLQ;NNSTT J E!H"a%(lq%88AaLQ;NNRSSJ    c                     U S::  d  US::  d  US::  a  [        S5      eS[        R                  -  U -  U-  U-  nSU-  [        SU S-  -  SUS-  -  SUS-  -  5      -  nX44$ )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FQABB BEE/A

!A
%C s7WQAXq1a4xQT::D9r#   ))      ?r)   r)   F)numpyr
   scipy.specialr   r"   r(    r#   r!   <module>r-      s     !9x*r#   