ó
    ‰*£hÜ)  ã                   ó²   • S r SSKJr  SSKJr  SSKJrJr  SSKJ	r	J
r
  SSKJrJr  SSKJrJrJrJrJr  SSKJr  SS	KJr  SS
KJr  SSKJr   " S S\
5      rg)z4Parabolic geometrical entity.

Contains
* Parabola

é    )ÚS)Úordered)Ú_symbolÚsymbols)ÚGeometryEntityÚGeometrySet)ÚPointÚPoint2D)ÚLineÚLine2DÚRay2DÚ	Segment2DÚLinearEntity3D)ÚEllipse)Úsign)Úsimplify)Úsolvec                   ó²   • \ rS rSrSrSS jr\S 5       r\S 5       r\S 5       r	\S 5       r
SS	 jr\S
 5       r\S 5       rS r\S 5       r\S 5       rSrg)ÚParabolaé   a  A parabolic GeometryEntity.

A parabola is declared with a point, that is called 'focus', and
a line, that is called 'directrix'.
Only vertical or horizontal parabolas are currently supported.

Parameters
==========

focus : Point
    Default value is Point(0, 0)
directrix : Line

Attributes
==========

focus
directrix
axis of symmetry
focal length
p parameter
vertex
eccentricity

Raises
======
ValueError
    When `focus` is not a two dimensional point.
    When `focus` is a point of directrix.
NotImplementedError
    When `directrix` is neither horizontal nor vertical.

Examples
========

>>> from sympy import Parabola, Point, Line
>>> p1 = Parabola(Point(0, 0), Line(Point(5, 8), Point(7,8)))
>>> p1.focus
Point2D(0, 0)
>>> p1.directrix
Line2D(Point2D(5, 8), Point2D(7, 8))

Nc                 óÆ   • U(       a  [        USS9nO[        SS5      n[        U5      nUR                  U5      (       a  [        S5      e[        R
                  " XU40 UD6$ )Né   )Údimr   z*The focus must not be a point of directrix)r	   r   ÚcontainsÚ
ValueErrorr   Ú__new__)ÚclsÚfocusÚ	directrixÚkwargss       ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/geometry/parabola.pyr   ÚParabola.__new__A   sZ   € æÜ˜% QÑ'‰Eä˜!˜Q“KˆEä˜“Oˆ	à×Ñ˜e×$Ñ$ÜÐIÓJÐJä×%Ò% c°)ÑF¸vÑFÐFó    c                 ó   • g)a   Returns the ambient dimension of parabola.

Returns
=======

ambient_dimension : integer

Examples
========

>>> from sympy import Parabola, Point, Line
>>> f1 = Point(0, 0)
>>> p1 = Parabola(f1, Line(Point(5, 8), Point(7, 8)))
>>> p1.ambient_dimension
2

r   © ©Úselfs    r!   Úambient_dimensionÚParabola.ambient_dimensionO   s   € ð& r#   c                 óL   • U R                   R                  U R                  5      $ )a‚  Return the axis of symmetry of the parabola: a line
perpendicular to the directrix passing through the focus.

Returns
=======

axis_of_symmetry : Line

See Also
========

sympy.geometry.line.Line

Examples
========

>>> from sympy import Parabola, Point, Line
>>> p1 = Parabola(Point(0, 0), Line(Point(5, 8), Point(7, 8)))
>>> p1.axis_of_symmetry
Line2D(Point2D(0, 0), Point2D(0, 1))

)r   Úperpendicular_liner   r&   s    r!   Úaxis_of_symmetryÚParabola.axis_of_symmetryd   s   € ð0 �~‰~×0Ñ0°·±Ó<Ð<r#   c                 ó    • U R                   S   $ )a1  The directrix of the parabola.

Returns
=======

directrix : Line

See Also
========

sympy.geometry.line.Line

Examples
========

>>> from sympy import Parabola, Point, Line
>>> l1 = Line(Point(5, 8), Point(7, 8))
>>> p1 = Parabola(Point(0, 0), l1)
>>> p1.directrix
Line2D(Point2D(5, 8), Point2D(7, 8))

é   ©Úargsr&   s    r!   r   ÚParabola.directrix~   ó   € ð0 �y‰y˜‰|Ðr#   c                 ó"   • [         R                  $ )a7  The eccentricity of the parabola.

Returns
=======

eccentricity : number

A parabola may also be characterized as a conic section with an
eccentricity of 1. As a consequence of this, all parabolas are
similar, meaning that while they can be different sizes,
they are all the same shape.

See Also
========

https://en.wikipedia.org/wiki/Parabola


Examples
========

>>> from sympy import Parabola, Point, Line
>>> p1 = Parabola(Point(0, 0), Line(Point(5, 8), Point(7, 8)))
>>> p1.eccentricity
1

Notes
-----
The eccentricity for every Parabola is 1 by definition.

)r   ÚOner&   s    r!   ÚeccentricityÚParabola.eccentricity˜   s   € ôB �u‰uˆr#   c                 óp  • [        USS9n[        USS9nU R                  R                  nU[        R                  L aG  SU R
                  -  XR                  R                  -
  -  nX R                  R                  -
  S-  nXE-
  $ US:X  aG  SU R
                  -  X R                  R                  -
  -  nXR                  R                  -
  S-  nXE-
  $ U R                  u  pgU R                  R                  SS u  p‰X-
  S-  X'-
  S-  -   nU R                  R                  X5      S-  US-  U	S-  -   -  nXE-
  $ )aÚ  The equation of the parabola.

Parameters
==========
x : str, optional
    Label for the x-axis. Default value is 'x'.
y : str, optional
    Label for the y-axis. Default value is 'y'.

Returns
=======
equation : SymPy expression

Examples
========

>>> from sympy import Parabola, Point, Line
>>> p1 = Parabola(Point(0, 0), Line(Point(5, 8), Point(7, 8)))
>>> p1.equation()
-x**2 - 16*y + 64
>>> p1.equation('f')
-f**2 - 16*y + 64
>>> p1.equation(y='z')
-x**2 - 16*z + 64

T©Úrealé   r   r   N)r   r   Úsloper   ÚInfinityÚp_parameterÚvertexÚxÚyr   ÚcoefficientsÚequation)
r'   r@   rA   ÚmÚt1Út2ÚaÚbÚcÚds
             r!   rC   ÚParabola.equation»   s'  € ô6 �A˜DÑ!ˆÜ�A˜DÑ!ˆà�N‰N× Ñ ˆØ”—
‘
Š?Ø�d×&Ñ&Ñ'¨1¯{©{¯}©}Ñ+<Ñ=ˆBØ—k‘k—m‘mÑ# aÑ'ˆBð ‰wˆð �!‹VØ�d×&Ñ&Ñ'¨1¯{©{¯}©}Ñ+<Ñ=ˆBØ—k‘k—m‘mÑ# aÑ'ˆBð ‰wˆð	 —:‘:‰DˆAØ—>‘>×.Ñ.¨r°Ð2‰DˆAØ‘%˜!‘˜q™u q™jÑ(ˆBØ—‘×(Ñ(¨Ó.°Ñ1°1°a±4¸!¸Q¹$±;Ñ?ˆBØ‰wˆr#   c                 óZ   • U R                   R                  U R                  5      nUS-  nU$ )aÉ  The focal length of the parabola.

Returns
=======

focal_lenght : number or symbolic expression

Notes
=====

The distance between the vertex and the focus
(or the vertex and directrix), measured along the axis
of symmetry, is the "focal length".

See Also
========

https://en.wikipedia.org/wiki/Parabola

Examples
========

>>> from sympy import Parabola, Point, Line
>>> p1 = Parabola(Point(0, 0), Line(Point(5, 8), Point(7, 8)))
>>> p1.focal_length
4

r   )r   Údistancer   )r'   rM   Úfocal_lengths      r!   rN   ÚParabola.focal_lengthç   s+   € ð< —>‘>×*Ñ*¨4¯:©:Ó6ˆØ ‘zˆàÐr#   c                 ó    • U R                   S   $ )a  The focus of the parabola.

Returns
=======

focus : Point

See Also
========

sympy.geometry.point.Point

Examples
========

>>> from sympy import Parabola, Point, Line
>>> f1 = Point(0, 0)
>>> p1 = Parabola(f1, Line(Point(5, 8), Point(7, 8)))
>>> p1.focus
Point2D(0, 0)

r   r0   r&   s    r!   r   ÚParabola.focus
  r3   r#   c           
      ó  • [        SSS9u  p#U R                  5       n[        U[        5      (       aR  X;   a  U/$ [	        [        [        XAR                  5       /X#/SS9S    Vs/ s H  n[        U5      PM     sn5      5      $ [        U[        5      (       aA  [        UR                  X!R                  S   4X1R                  S   4/5      5      S:X  a  U/$ / $ [        U[        [        45      (       ax  [        U[        UR                  S   UR                  S   5      R                  5       /X#/SS9S   n[	        [        U Vs/ s H  oUU;   d  M
  [        U5      PM     sn5      5      $ [        U[        [         45      (       aJ  [	        [        [        XAR                  5       /X#/SS9S    Vs/ s H  n[        U5      PM     sn5      5      $ [        U["        5      (       a  [%        S5      e[%        S5      es  snf s  snf s  snf )	ab  The intersection of the parabola and another geometrical entity `o`.

Parameters
==========

o : GeometryEntity, LinearEntity

Returns
=======

intersection : list of GeometryEntity objects

Examples
========

>>> from sympy import Parabola, Point, Ellipse, Line, Segment
>>> p1 = Point(0,0)
>>> l1 = Line(Point(1, -2), Point(-1,-2))
>>> parabola1 = Parabola(p1, l1)
>>> parabola1.intersection(Ellipse(Point(0, 0), 2, 5))
[Point2D(-2, 0), Point2D(2, 0)]
>>> parabola1.intersection(Line(Point(-7, 3), Point(12, 3)))
[Point2D(-4, 3), Point2D(4, 3)]
>>> parabola1.intersection(Segment((-12, -65), (14, -68)))
[]

zx yTr9   )Úsetr/   r   z5Entity must be two dimensional, not three dimensionalzWrong type of argument were put)r   rC   Ú
isinstancer   Úlistr   r   r	   r
   r   ÚsubsÚ_argsr   r   r   Úpointsr   r   Ú	TypeError)r'   Úor@   rA   Úparabola_eqÚiÚresults          r!   ÚintersectionÚParabola.intersection$  sÿ  € ô8 �u 4Ñ(‰ˆØ—m‘m“oˆÜ�aœ×"Ñ"Ø‹yØ�s�
äœG´uØ §*¡*£,Ð/°!°¸Tñ8CØCDò8Fó %Gò 8F°!¤U¨1¦Xñ 8Fñ %Gó Hó Ið Iä˜œ7×#Ñ#Ü˜×(Ñ(¨1¯g©g°a©j¨/¸A¿w¹wÀq¹z¸?Ð)KÓLÓMÐQRÓRØ�s�
à�	Ü˜œI¤uÐ-×.Ñ.Ü˜KÜ�q—x‘x ‘{ A§H¡H¨Q¡KÓ0×9Ñ9Ó;ð=à�˜Dñ"à"#ñ%ˆFô œ±VÓ F²V°ÀA¹v£¤¨¦±VÑ FÓGÓHÐHÜ˜œF¤GÐ,×-Ñ-Üœ´UØŸj™j›lÐ+¨a¨V¸ñ6?Ø?@ò6Bó !Cò 6B°¤¨¦ñ 6Bñ !Có Dó Eð Eä˜œ>×*Ñ*ÜÐSÓTÐTäÐ=Ó>Ð>ùò%%Gùò !Gùò!Cs   Á$G=Å	HÅHÆ2Hc                 ó  • U R                   R                  nU[        R                  L a?  U R                   R                  S   n[        U R                  R                  S   U-   5      nO–US:X  a?  U R                   R                  S   n[        U R                  R                  S   U-   5      nOQU R                   R                  U R                  5      n[        U R                  R                  UR                  -
  5      nX0R                  -  $ )ae  P is a parameter of parabola.

Returns
=======

p : number or symbolic expression

Notes
=====

The absolute value of p is the focal length. The sign on p tells
which way the parabola faces. Vertical parabolas that open up
and horizontal that open right, give a positive value for p.
Vertical parabolas that open down and horizontal that open left,
give a negative value for p.


See Also
========

https://www.sparknotes.com/math/precalc/conicsections/section2/

Examples
========

>>> from sympy import Parabola, Point, Line
>>> p1 = Parabola(Point(0, 0), Line(Point(5, 8), Point(7, 8)))
>>> p1.p_parameter
-4

r   r   r/   )r   r<   r   r=   rB   r   r   r1   Ú
projectionr@   rN   )r'   rD   r@   ÚprA   rJ   s         r!   r>   ÚParabola.p_parameterZ  sÈ   € ðB �N‰N× Ñ ˆØ”—
‘
Š?Ø—‘×+Ñ+¨AÑ.ˆAÜ�T—Z‘Z—_‘_ QÑ'¨!Ñ+Ó,‰AØ�!‹VØ—‘×+Ñ+¨AÑ.ˆAÜ�T—Z‘Z—_‘_ QÑ'¨!Ñ+Ó,‰Aà—‘×)Ñ)¨$¯*©*Ó5ˆAÜ�T—Z‘Z—\‘\ A§C¡CÑ'Ó(ˆAØ×$Ñ$Ñ$Ð$r#   c                 óŒ  • U R                   nU R                  R                  nU[        R                  L a5  [        UR                  S   U R                  -
  UR                  S   5      nU$ US:X  a5  [        UR                  S   UR                  S   U R                  -
  5      nU$ U R                  R                  U 5      S   nU$ )a  The vertex of the parabola.

Returns
=======

vertex : Point

See Also
========

sympy.geometry.point.Point

Examples
========

>>> from sympy import Parabola, Point, Line
>>> p1 = Parabola(Point(0, 0), Line(Point(5, 8), Point(7, 8)))
>>> p1.vertex
Point2D(0, 4)

r   r/   )
r   r   r<   r   r=   r	   r1   r>   r,   r^   )r'   r   rD   r?   s       r!   r?   ÚParabola.vertex‡  s®   € ð. —
‘
ˆØ�N‰N× Ñ ˆØ”—
‘
Š?Ü˜5Ÿ:™: a™=¨4×+;Ñ+;Ñ;¸U¿Z¹ZÈ¹]ÓKˆFð
 ˆð	 �!‹VÜ˜5Ÿ:™: a™=¨%¯*©*°Q©-¸$×:JÑ:JÑ*JÓKˆFð ˆð ×*Ñ*×7Ñ7¸Ó=¸aÑ@ˆFØˆr#   r%   )NN)r@   rA   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úpropertyr(   r,   r   r6   rC   rN   r   r^   r>   r?   Ú__static_attributes__r%   r#   r!   r   r      s½   † ñ*ôXGð ñó ðð( ñ=ó ð=ð2 ñó ðð2 ñ ó ð ôD*ðX ñ ó ð ðD ñó ðò24?ðl ñ*%ó ð*%ðX ñó ór#   r   N)rj   Ú
sympy.corer   Úsympy.core.sortingr   Úsympy.core.symbolr   r   Úsympy.geometry.entityr   r   Úsympy.geometry.pointr	   r
   Úsympy.geometry.liner   r   r   r   r   Úsympy.geometry.ellipser   Úsympy.functionsr   Úsympy.simplify.simplifyr   Úsympy.solvers.solversr   r   r%   r#   r!   Ú<module>rw      s;   ðñõ Ý &ß .ß =ß /ß NÕ NÝ *Ý  Ý ,Ý 'ôRˆ{õ Rr#   