§
    PŠtj,  ã                   ó(  — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZmZ d d	lmZ  G d
„ de	¦  «        Zed„ ¦   «         Ze                     e¦  «        d„ ¦   «         Ze                     e¦  «        d„ ¦   «         Ze                     e¦  «        dd„¦   «         Ze                     e¦  «        dd„¦   «         Ze                     e¦  «        dd„¦   «         Ze                     e¦  «        dd„¦   «         ZdS )é    )Úsingledispatch)Úpi)Útan)Útrigsimp)ÚBasicÚTuple)Ú_symbol)Úsolve)ÚPointÚSegmentÚCurveÚEllipseÚPolygon)ÚImplicitRegionc                   óz   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ˆ xZ
S )ÚParametricRegiona  
    Represents a parametric region in space.

    Examples
    ========

    >>> from sympy import cos, sin, pi
    >>> from sympy.abc import r, theta, t, a, b, x, y
    >>> from sympy.vector import ParametricRegion

    >>> ParametricRegion((t, t**2), (t, -1, 2))
    ParametricRegion((t, t**2), (t, -1, 2))
    >>> ParametricRegion((x, y), (x, 3, 4), (y, 5, 6))
    ParametricRegion((x, y), (x, 3, 4), (y, 5, 6))
    >>> ParametricRegion((r*cos(theta), r*sin(theta)), (r, -2, 2), (theta, 0, pi))
    ParametricRegion((r*cos(theta), r*sin(theta)), (r, -2, 2), (theta, 0, pi))
    >>> ParametricRegion((a*cos(t), b*sin(t)), t)
    ParametricRegion((a*cos(t), b*sin(t)), t)

    >>> circle = ParametricRegion((r*cos(theta), r*sin(theta)), r, (theta, 0, pi))
    >>> circle.parameters
    (r, theta)
    >>> circle.definition
    (r*cos(theta), r*sin(theta))
    >>> circle.limits
    {theta: (0, pi)}

    Dimension of a parametric region determines whether a region is a curve, surface
    or volume region. It does not represent its dimensions in space.

    >>> circle.dimensions
    1

    Parameters
    ==========

    definition : tuple to define base scalars in terms of parameters.

    bounds : Parameter or a tuple of length 3 to define parameter and corresponding lower and upper bound.

    c                 óÈ  •— d}i }t          |t          ¦  «        s	t          |Ž }|D ]l}t          |t          t          f¦  «        rHt          |¦  «        dk    rt	          d¦  «        ‚||d         fz  }|d         |d         f||d         <   Œf||fz  }Œmt          |t          t          f¦  «        s|f} t          ¦   «         j        | t          |Ž g|¢R Ž }||_        ||_        |S )N© é   z?Tuple should be in the form (parameter, lowerbound, upperbound)r   é   é   )	Ú
isinstancer   ÚtupleÚlenÚ
ValueErrorÚsuperÚ__new__Ú_parametersÚ_limits)ÚclsÚ
definitionÚboundsÚ
parametersÚlimitsÚboundÚobjÚ	__class__s          €ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/vector/parametricregion.pyr   zParametricRegion.__new__6   sû   ø€ Øˆ
Øˆå˜&¥%Ñ(Ô(ð 	$Ý˜F�^ˆFàð 	'ð 	'ˆEÝ˜%¥%­ Ñ0Ô0ð 'Ý�u‘:”: ’?�?Ý$Ð%fÑgÔgÐgØ˜u Qœx˜kÑ)�
Ø$)¨!¤H¨e°A¬hÐ#7��u˜Q”xÑ Ð à˜u˜hÑ&�
�
å˜*¥u­e nÑ5Ô5ð 	'Ø$˜ˆJà�e‰gŒgŒo˜c¥5¨*Ð#5Ð?¸Ð?Ð?Ð?ˆØ$ˆŒØˆŒàˆ
ó    c                 ó   — | j         d         S )Nr   )Úargs©Úselfs    r(   r!   zParametricRegion.definitionO   s   € àŒy˜Œ|Ðr)   c                 ó   — | j         S ©N)r   r,   s    r(   r$   zParametricRegion.limitsS   s
   € àŒ|Ðr)   c                 ó   — | j         S r/   )r   r,   s    r(   r#   zParametricRegion.parametersW   s   € àÔÐr)   c                 ó*   — t          | j        ¦  «        S r/   )r   r$   r,   s    r(   Ú
dimensionszParametricRegion.dimensions[   s   € å�4”;ÑÔÐr)   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr!   r$   r#   r2   Ú__classcell__)r'   s   @r(   r   r      s¯   ø€ € € € € ð(ð (ðRð ð ð ð ð2 ðð ñ „Xðð ðð ñ „Xðð ð ð  ñ „Xð ð ð ð  ñ „Xð ð  ð  ð  ð  r)   r   c                 ó    — t          d¦  «        ‚)aN  
    Returns a list of ParametricRegion objects representing the geometric region.

    Examples
    ========

    >>> from sympy.abc import t
    >>> from sympy.vector import parametric_region_list
    >>> from sympy.geometry import Point, Curve, Ellipse, Segment, Polygon

    >>> p = Point(2, 5)
    >>> parametric_region_list(p)
    [ParametricRegion((2, 5))]

    >>> c = Curve((t**3, 4*t), (t, -3, 4))
    >>> parametric_region_list(c)
    [ParametricRegion((t**3, 4*t), (t, -3, 4))]

    >>> e = Ellipse(Point(1, 3), 2, 3)
    >>> parametric_region_list(e)
    [ParametricRegion((2*cos(t) + 1, 3*sin(t) + 3), (t, 0, 2*pi))]

    >>> s = Segment(Point(1, 3), Point(2, 6))
    >>> parametric_region_list(s)
    [ParametricRegion((t + 1, 3*t + 3), (t, 0, 1))]

    >>> p1, p2, p3, p4 = [(0, 1), (2, -3), (5, 3), (-2, 3)]
    >>> poly = Polygon(p1, p2, p3, p4)
    >>> parametric_region_list(poly)
    [ParametricRegion((2*t, 1 - 4*t), (t, 0, 1)), ParametricRegion((3*t + 2, 6*t - 3), (t, 0, 1)),     ParametricRegion((5 - 7*t, 3), (t, 0, 1)), ParametricRegion((2*t - 2, 3 - 2*t),  (t, 0, 1))]

    z?SymPy cannot determine parametric representation of the region.)r   )Úregs    r(   Úparametric_region_listr;   `   s   € õF ÐVÑ
WÔ
WÐWr)   c                 ó,   — t          | j        ¦  «        gS r/   )r   r+   )r&   s    r(   Ú_r=   †   s   € å˜SœXÑ&Ô&Ð'Ð'r)   c                 óp   — |                       | j        ¦  «        j        }| j        }t	          ||¦  «        gS r/   )Úarbitrary_pointÚ	parameterr+   r$   r   )r&   r!   r"   s      r(   r=   r=   ‹   s4   € à×$Ò$ S¤]Ñ3Ô3Ô8€JØŒZ€FÝ˜Z¨Ñ0Ô0Ð1Ð1r)   Útc                 ó”   — |                       |¦  «        j        }t          |d¬¦  «        }|ddt          z  f}t	          ||¦  «        gS )NT©Úrealr   r   )r?   r+   r	   r   r   )r&   r@   r!   rA   r"   s        r(   r=   r=   ’   sL   € à×$Ò$ YÑ/Ô/Ô4€JÝ�	 Ð%Ñ%Ô%€AØ��A•b‘Dˆ\€FÝ˜Z¨Ñ0Ô0Ð1Ð1r)   c                 ó  — t          |d¬¦  «        }|                      |¦  «        j        }t          dd¦  «        D ]™}t	          ||         | j        d         j        |         z
  |¦  «        }t	          ||         | j        d         j        |         z
  |¦  «        }t          |¦  «        dk    r&t          |¦  «        dk    r||d         |d         f} nŒš|                      |¦  «        j        }t          ||¦  «        gS )NTrC   r   r   r   )r	   r?   r+   Úranger
   Úpointsr   r   )	r&   r@   rA   r!   ÚiÚlower_boundÚupper_boundr"   Údefinition_tuples	            r(   r=   r=   š   s÷   € å�	 Ð%Ñ%Ô%€AØ×$Ò$ QÑ'Ô'Ô,€Jå�1�a‰[Œ[ð ð ˆÝ˜J qœM¨C¬J°q¬MÔ,>¸qÔ,AÑAÀ1ÑEÔEˆÝ˜J qœM¨C¬J°q¬MÔ,>¸qÔ,AÑAÀ1ÑEÔEˆåˆ{ÑÔ˜qÒ Ð ¥S¨Ñ%5Ô%5¸Ò%:Ð%:Ø˜ Aœ¨°A¬Ð6ˆFØˆEøà×*Ò*¨9Ñ5Ô5Ô:ÐÝÐ-¨vÑ6Ô6Ð7Ð7r)   c                 ó.   ‡— ˆfd„| j         D ¦   «         }|S )Nc                 ó<   •— g | ]}t          |‰¦  «        d          ‘ŒS )r   )r;   )Ú.0Úsider@   s     €r(   ú
<listcomp>z_.<locals>.<listcomp>­   s)   ø€ ÐJÐJÐJ¸Õ	  iÑ	0Ô	0°Ô	3ÐJÐJÐJr)   )Úsides)r&   r@   Úls    ` r(   r=   r=   «   s#   ø€ àJÐJÐJÐJÀÄ	ÐJÑJÔJ€AØ€Hr)   ©rA   Úsc                 ó8  ‡— |                       |¦  «        }g }t          t          | j        ¦  «        dz
  ¦  «        D ]G}t	          ||         d¬¦  «        Šˆfd„|D ¦   «         }|                     ‰ddt          z  f¦  «         ŒHt          |Ž }t          |g|¢R Ž gS )Nr   TrC   c                 óv   •— g | ]5}t          |                     ‰t          ‰d z  ¦  «        ¦  «        ¦  «        ‘Œ6S )r   )r   Úsubsr   )rN   Úelemr@   s     €r(   rP   z_.<locals>.<listcomp>¹   s;   ø€ Ð^Ð^Ð^È4•h˜tŸyšy¨µC¸	À!¹Ñ4DÔ4DÑEÔEÑFÔFÐ^Ð^Ð^r)   r   r   )	Úrational_parametrizationrF   r   Ú	variablesr	   Úappendr   r   r   )r&   r#   r!   r"   rH   r@   s        @r(   r=   r=   ±   s´   ø€ à×-Ò-¨jÑ9Ô9€JØ€Få•3�s”}Ñ%Ô%¨Ñ)Ñ*Ô*ð -ð -ˆå˜J qœM°Ð5Ñ5Ô5ˆ	Ø^Ð^Ð^Ð^ÐS]Ð^Ñ^Ô^ˆ
Ø�Š�y ! Q¥r¡TÐ*Ñ,Ô,Ð,Ð,å˜
Ð#€JÝ˜ZÐ1¨&Ð1Ð1Ð1Ð2Ð2r)   N)rA   )rS   )Ú	functoolsr   Úsympy.core.numbersr   Ú(sympy.functions.elementary.trigonometricr   Úsympy.simplifyr   Ú
sympy.corer   r   Úsympy.core.symbolr	   Úsympy.solversr
   Úsympy.geometryr   r   r   r   r   Úsympy.vectorr   r   r;   Úregisterr=   r   r)   r(   ú<module>rf      s1  ðØ $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ 'Ð 'Ð 'Ð 'Ð 'Ð 'ðQ ð Q ð Q ð Q ð Q �uñ Q ô Q ð Q ðh ð"Xð "Xñ „ð"XðJ × Ò  Ñ'Ô'ð(ð (ñ (Ô'ð(ð × Ò  Ñ'Ô'ð2ð 2ñ (Ô'ð2ð × Ò  Ñ)Ô)ð2ð 2ð 2ñ *Ô)ð2ð × Ò  Ñ)Ô)ð8ð 8ð 8ñ *Ô)ð8ð  × Ò  Ñ)Ô)ðð ð ñ *Ô)ðð
 × Ò  Ñ0Ô0ð3ð 3ð 3ñ 1Ô0ð3ð 3ð 3r)   