+
    ‹°³j5�  ã                   ó0  € R t ^ RIt^ RIHtHtHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtH t  ^ RI!H"t"H#t#H$t$ ^RI%H&t& ^ RI'H(t(  ! R R]&4      t) ! R R])4      t* ! R R])4      t+R# )aD  Geometrical Points.

Contains
========
Point
Point2D
Point3D

When methods of Point require 1 or more points as arguments, they
can be passed as a sequence of coordinates or Points:

>>> from sympy import Point
>>> Point(1, 1).is_collinear((2, 2), (3, 4))
False
>>> Point(1, 1).is_collinear(Point(2, 2), Point(3, 4))
False

N)ÚSÚsympifyÚExpr)ÚAdd)ÚTuple)ÚFloat)Úglobal_parameters)Ú	nsimplifyÚsimplify)ÚGeometryError)Úsqrt)Úim)ÚcosÚsin)ÚMatrix)Ú	Transpose)ÚuniqÚis_sequence)Ú
filldedentÚ	func_nameÚUndecidable)ÚGeometryEntity)Úprec_to_dpsc                   ór  a € ] tR t^*t o RtRtR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR t]R 4       t]R 4       t]R 4       t]R 4       tR tR tR tR)R ltR tR t R t!]R 4       t"R t#]R 4       t$]R 4       t%R  t&]R! 4       t']R" 4       t(]R# 4       t)R$ t*R% t+]R& 4       t,R't-V t.R(# )*ÚPointa  A point in a n-dimensional Euclidean space.

Parameters
==========

coords : sequence of n-coordinate values. In the special
    case where n=2 or 3, a Point2D or Point3D will be created
    as appropriate.
evaluate : if `True` (default), all floats are turn into
    exact types.
dim : number of coordinates the point should have.  If coordinates
    are unspecified, they are padded with zeros.
on_morph : indicates what should happen when the number of
    coordinates of a point need to be changed by adding or
    removing zeros.  Possible values are `'warn'`, `'error'`, or
    `ignore` (default).  No warning or error is given when `*args`
    is empty and `dim` is given. An error is always raised when
    trying to remove nonzero coordinates.


Attributes
==========

length
origin: A `Point` representing the origin of the
    appropriately-dimensioned space.

Raises
======

TypeError : When instantiating with anything but a Point or sequence
ValueError : when instantiating with a sequence with length < 2 or
    when trying to reduce dimensions if keyword `on_morph='error'` is
    set.

See Also
========

sympy.geometry.line.Segment : Connects two Points

Examples
========

>>> from sympy import Point
>>> from sympy.abc import x
>>> Point(1, 2, 3)
Point3D(1, 2, 3)
>>> Point([1, 2])
Point2D(1, 2)
>>> Point(0, x)
Point2D(0, x)
>>> Point(dim=4)
Point(0, 0, 0, 0)

Floats are automatically converted to Rational unless the
evaluate flag is False:

>>> Point(0.5, 0.25)
Point2D(1/2, 1/4)
>>> Point(0.5, 0.25, evaluate=False)
Point2D(0.5, 0.25)

Tc                óÎ  € VP                  R \        P                  4      pVP                  RR4      p\        V4      ^8X  d
   V^ ,          MTp\	        V\
        4      '       d.   Rp\        V4      VP                  R\        V4      4      8X  d   V# \        V4      '       g-   \        \        RP                  \        V4      4      4      4      h\        V4      ^ 8X  d@   VP                  RR4      '       d(   \        P                  3VP                  R4      ,          p\        V!  pVP                  R\        V4      4      p\        V4      ^8  d   \        \        R4      4      h\        V4      V8w  dk   RP                  V\        V4      V4      pVR8X  d   MFVR	8X  d   \        V4      hVR
8X  d   \        P                   ! V^R7       M\        \        R4      4      h\#        WVR 4      '       d   \        R4      h\"        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        R4      h\$        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \        R4      hVRV \        P                  3V\        V4      ,
          ,          ,           pV'       dJ   TP'                  VP)                  \*        4       Uu/ uF  pV\-        \/        VRR7      4      bK  	  up4      p\        V4      ^8X  d   RVR&   \1        V/ VB # \        V4      ^8X  d   RVR&   \3        V/ VB # \4        P6                  ! V .VO5!  # u upi )ÚevaluateÚon_morphÚignoreFÚdimz<
                Expecting sequence of coordinates, not `{}`Nz[
                Point requires 2 or more coordinates or
                keyword `dim` > 1.z2Dimension of {} needs to be changed from {} to {}.ÚerrorÚwarn)Ú
stacklevelzf
                        on_morph value should be 'error',
                        'warn' or 'ignore'.z&Nonzero coordinates cannot be removed.c              3   óv   "  € T F/  qP                   ;'       d    \        V4      P                  R J x € K1  	  R# 5i)FN)Ú	is_numberr   Úis_zero©Ú.0Úas   & ÚU/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/geometry/point.pyÚ	<genexpr>Ú Point.__new__.<locals>.<genexpr>›   s*   é € ÐF¹v¸!�{‰{×5Ð5œr !›uŸ}™}°Ð5Ô5»vùs   ‚9™ 9Tz(Imaginary coordinates are not permitted.c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5i©N)Ú
isinstancer   r&   s   & r)   r*   r+   �   s   é € Ð7±¨1”:˜a¤×&Ð&³ùs   ‚z,Coordinates must be valid SymPy expressions.)ÚrationalÚ_nocheck)Úgetr   r   Úlenr.   r   r   Ú	TypeErrorr   Úformatr   r   ÚZeror   Ú
ValueErrorÚwarningsr!   ÚanyÚallÚxreplaceÚatomsr   r
   r	   ÚPoint2DÚPoint3Dr   Ú__new__)	ÚclsÚargsÚkwargsr   r   Úcoordsr   ÚmessageÚfs	   &*,      r)   r>   ÚPoint.__new__m   së  € Ø—:‘:˜jÔ*;×*DÑ*DÓEˆØ—:‘:˜j¨(Ó3ˆô   ›I¨œN��a–°ˆô �fœe×$Ò$ð ˆHÜ�6‹{˜fŸj™j¨´°F³Ó<Ô<Ø�ä˜6×"Ò"ÜœJð (?ç(.©¬y¸Ó/@Ó(AóCó Dð Dô
 ˆv‹;˜!Ô §
¡
¨5°$× 7Ò 7Ü—f‘f�Y˜vŸz™z¨%Ó0Õ0ˆFä˜‘ˆØ�j‰j˜¤ F£Ó,ˆäˆv‹;˜Œ?ÜœZð )&ó 'ó (ð (ô ˆv‹;˜#Ôð(ß)/©°¼¸F»ÀSÓ)Ið à˜8Ô#ØØ˜WÔ$Ü  Ó)Ð)Ø˜VÔ#Ü—’˜g°!Ö4ä ¤ð -/ó "0ó 1ð 1ô ˆv�dˆ|×ÒÜÐEÓFÐFß‹3ÑF¹vÓF�3�3Š3ÑF¹vÓF×FÒFÜÐGÓHÐHß‹sÑ7±Ó7�s�sŠsÑ7±Ó7×7Ò7ÜÐJÓKÐKð ˜˜�¤§¡ 	¨3´°V³Õ+<Õ =Õ=ˆ÷ Ø—_‘_à Ÿ,™,¤uÔ-ó&/á-�Qð ”8œI a°$Ô7Ó8Ò8Ù-ñ&/ó 0ˆFô
 ˆv‹;˜!ÔØ!%ˆF�:ÑÜ˜FÐ- fÑ-Ð-Ü�‹[˜AÔØ!%ˆF�:ÑÜ˜FÐ- fÑ-Ð-ô ×%Ò% cÐ3¨FÓ3Ð3ùò&/s   Ë# M"c                ód   € \        ^ .\        V 4      ,          4      p\         P                  W4      # )z7Returns the distance between this point and the origin.)r   r2   Údistance)ÚselfÚorigins   & r)   Ú__abs__ÚPoint.__abs__µ   s%   € ä˜�sœ3˜t›9•}Ó%ˆÜ�~‰~˜fÓ+Ð+ó    c                ó  €  \         P                  V \        VRR7      4      w  r#\        Y#4       UUu. uF  w  rE\        YE,           4      NK  	  ppp\        TRR7      #   \         d    \        RP	                  T4      4      hi ; iu uppi )a˜  Add other to self by incrementing self's coordinates by
those of other.

Notes
=====

>>> from sympy import Point

When sequences of coordinates are passed to Point methods, they
are converted to a Point internally. This __add__ method does
not do that so if floating point values are used, a floating
point result (in terms of SymPy Floats) will be returned.

>>> Point(1, 2) + (.1, .2)
Point2D(1.1, 2.2)

If this is not desired, the `translate` method can be used or
another Point can be added:

>>> Point(1, 2).translate(.1, .2)
Point2D(11/10, 11/5)
>>> Point(1, 2) + Point(.1, .2)
Point2D(11/10, 11/5)

See Also
========

sympy.geometry.point.Point.translate

F©r   z+Don't know how to add {} and a Point object)r   Ú_normalize_dimensionr3   r   r4   Úzipr
   )rH   ÚotherÚsÚor(   ÚbrB   s   &&     r)   Ú__add__ÚPoint.__add__º   s�   € ð>	]Ü×-Ñ-¨d´E¸%È%Ô4PÓQ‰DˆAô /2°!¬iÔ8©i¡d a”(˜1�5–/©iˆÑ8Ü�V eÔ,Ð,øô	 ô 	]ÜÐ M× TÑ TÐUZÓ [Ó\Ð\ð	]üó 9s   ‚#A ³BÁ&Bc                ó   € WP                   9   # r-   ©r@   ©rH   Úitems   &&r)   Ú__contains__ÚPoint.__contains__á   s   € Ø—y‘yÑ Ð rL   c                ó�   € \        V4      pV P                   Uu. uF  p\        W!,          4      NK  	  pp\        VRR7      # u upi )z'Divide point's coordinates by a factor.FrN   ©r   r@   r
   r   )rH   ÚdivisorÚxrB   s   &&  r)   Ú__truediv__ÚPoint.__truediv__ä   s=   € ä˜'Ó"ˆØ/3¯yªyÓ9©y¨!”(˜1�9Ö%©yˆÐ9Ü�V eÔ,Ð,ùò :ó   šAc                ó¾   € \        V\        4      '       d.   \        V P                  4      \        VP                  4      8w  d   R # V P                  VP                  8H  # )F)r.   r   r2   r@   ©rH   rQ   s   &&r)   Ú__eq__ÚPoint.__eq__ê   s<   € Ü˜%¤×'Ò'¬3¨t¯y©y«>¼SÀÇÁ»_Ô+LÙØ�y‰y˜EŸJ™JÑ&Ð&rL   c                ó(   € V P                   V,          # r-   rX   )rH   Úkeys   &&r)   Ú__getitem__ÚPoint.__getitem__ï   s   € Ø�y‰y˜�~ÐrL   c                ó,   € \        V P                  4      # r-   )Úhashr@   ©rH   s   &r)   Ú__hash__ÚPoint.__hash__ò   s   € Ü�D—I‘I‹ÐrL   c                ó6   € V P                   P                  4       # r-   )r@   Ú__iter__rn   s   &r)   rr   ÚPoint.__iter__õ   s   € Ø�y‰y×!Ñ!Ó#Ð#rL   c                ó,   € \        V P                  4      # r-   )r2   r@   rn   s   &r)   Ú__len__ÚPoint.__len__ø   s   € Ü�4—9‘9‹~ÐrL   c                ó�   € \        V4      pV P                   Uu. uF  p\        W!,          4      NK  	  pp\        VRR7      # u upi )aä  Multiply point's coordinates by a factor.

Notes
=====

>>> from sympy import Point

When multiplying a Point by a floating point number,
the coordinates of the Point will be changed to Floats:

>>> Point(1, 2)*0.1
Point2D(0.1, 0.2)

If this is not desired, the `scale` method can be used or
else only multiply or divide by integers:

>>> Point(1, 2).scale(1.1, 1.1)
Point2D(11/10, 11/5)
>>> Point(1, 2)*11/10
Point2D(11/10, 11/5)

See Also
========

sympy.geometry.point.Point.scale
FrN   r^   )rH   Úfactorr`   rB   s   &&  r)   Ú__mul__ÚPoint.__mul__û   s>   € ô6 ˜“ˆØ.2¯iªiÓ8©i¨”(˜1�8Ö$©iˆÐ8Ü�V eÔ,Ð,ùò 9rc   c                ó$   € V P                  V4      # )z)Multiply a factor by point's coordinates.)ry   )rH   rx   s   &&r)   Ú__rmul__ÚPoint.__rmul__  s   € à�|‰|˜FÓ#Ð#rL   c                ó\   € V P                    Uu. uF  q) NK  	  pp\        VRR7      # u upi )zNegate the point.FrN   )r@   r   )rH   r`   rB   s   &  r)   Ú__neg__ÚPoint.__neg__  s,   € à"ŸišiÓ(™i˜“"™iˆÐ(Ü�V eÔ,Ð,ùò )s   �)c                ó<   € Y Uu. uF  q") NK  	  up,           # u upi )zHSubtract two points, or subtract a factor from this point's
coordinates.© )rH   rQ   r`   s   && r)   Ú__sub__ÚPoint.__sub__#  s!   € ð  5Ó)¡5˜a“r¡5Ñ)Õ)Ð)ùÒ)s   …c                óz  a€ \        V RR4      oVP                  RS4      oSf   \        R V 4       4      o\        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       d   \	        V4      # SVR&   VP                  RR	4      VR&   V Uu. uF  p\        V3/ VB NK  	  up# u upi )
znEnsure that points have the same dimension.
By default `on_morph='warn'` is passed to the
`Point` constructor.Ú_ambient_dimensionNr   c              3   ó8   "  € T F  qP                   x € K  	  R # 5ir-   ©Úambient_dimension©r'   Úis   & r)   r*   Ú-Point._normalize_dimension.<locals>.<genexpr>3  s   é € Ð:±6¨a×)Ö)³6ùs   ‚c              3   ó@   <"  € T F  qP                   S8H  x € K  	  R # 5ir-   rˆ   )r'   r‹   r   s   & €r)   r*   rŒ   4  s   øé € Ð:±6¨a×"Ñ" cÖ)³6ùs   ƒFTr   r!   )Úgetattrr1   Úmaxr9   Úlistr   )r?   ÚpointsrA   r‹   r   s   &*, @r)   rO   ÚPoint._normalize_dimension(  s¤   ø€ ô �cÐ/°Ó6ˆà�j‰j˜ Ó$ˆàŠ;ÜÑ:±6Ó:Ó:ˆCß‹3Ô:±6Ó:�3�3Š3Ô:±6Ó:×:Ò:Ü˜“<ÐØˆˆu‰Ø#ŸZ™Z¨
°FÓ;ˆˆzÑÙ,2Ó3©F q”�aÑ"˜6Ô"©FÑ3Ð3ùÒ3s   Â B8c                 óZ  € \        V 4      ^ 8X  d   R# \        P                  ! V  Uu. uF  p\        V4      NK  	  up!  pV^ ,          pVR,           Uu. uF  qV,
          NK  	  pp\        V Uu. uF  qP                  NK  	  up4      pVP                  R R7      # u upi u upi u upi )a?  The affine rank of a set of points is the dimension
of the smallest affine space containing all the points.
For example, if the points lie on a line (and are not all
the same) their affine rank is 1.  If the points lie on a plane
but not a line, their affine rank is 2.  By convention, the empty
set has affine rank -1.:é   NNc                 óx   € V P                   '       d   \        V P                  ^4      4      R8  # V P                  # )é   gê-�™—q=)r$   ÚabsÚnr%   )r`   s   &r)   Ú<lambda>Ú#Point.affine_rank.<locals>.<lambda>M  s*   € Ø#$§;§; ;ŒC�—‘�A“‹K˜%ÑÐ=°A·I±IÐ=rL   )Ú
iszerofuncéÿÿÿÿ)r2   r   rO   r   r@   Úrank)r@   r‹   r‘   rI   Úms   *    r)   Úaffine_rankÚPoint.affine_rank:  s�   € ô ˆt‹9˜Œ>ØˆIô ×+Ò+ÁÓ-EÁ¸1¬e°A®hÁÑ-EÑFˆØ˜•ˆØ&,¨R¦jÓ1¡j �f—*�*¡jˆÐ1ä¡FÓ+¡F˜q—F”F¡FÑ+Ó,ˆà�v‰vñ $>ˆvó ?ð 	?ùò .Fùâ1ùâ+s   §BÁB#Á0B(c                ó.   € \        V R\        V 4      4      # )z$Number of components this point has.r†   )rŽ   r2   rn   s   &r)   r‰   ÚPoint.ambient_dimensionP  s   € ô �tÐ1´3°t³9Ó=Ð=rL   c                ó  € \        V4      ^8:  d   R# V P                  ! V Uu. uF  p\        V4      NK  	  up!  pV^ ,          P                  ^8X  d   R# \	        \        V4      4      p\        P                  ! V!  ^8*  # u upi )a1  Return True if there exists a plane in which all the points
lie.  A trivial True value is returned if `len(points) < 3` or
all Points are 2-dimensional.

Parameters
==========

A set of points

Raises
======

ValueError : if less than 3 unique points are given

Returns
=======

boolean

Examples
========

>>> from sympy import Point3D
>>> p1 = Point3D(1, 2, 2)
>>> p2 = Point3D(2, 7, 2)
>>> p3 = Point3D(0, 0, 2)
>>> p4 = Point3D(1, 1, 2)
>>> Point3D.are_coplanar(p1, p2, p3, p4)
True
>>> p5 = Point3D(0, 1, 3)
>>> Point3D.are_coplanar(p1, p2, p3, p5)
False

T)r2   rO   r   r‰   r�   r   rŸ   )r?   r‘   r‹   s   &* r)   Úare_coplanarÚPoint.are_coplanarU  sv   € ôH ˆv‹;˜!ÔÙà×)Ò)¹fÓ+E¹f¸¬E°!®H¹fÑ+EÑFˆà�!�9×&Ñ&¨!Ô+ÙÜ”d˜6“lÓ#ˆÜ× Ò  &Ñ)¨QÑ.Ð.ùò ,Fs   £Bc           	     óÊ  € \        V\        4      '       g    \        WP                  R7      p\        V\        4      '       dD   \        P                  V \        V4      4      w  r#\        \        R \        W#4       4       !  4      # \        VRR4      pVf   \	        R\        V4      ,          4      hV! V 4      #   \         d    \	        R\        T4      ,          4      hi ; i)aª  The Euclidean distance between self and another GeometricEntity.

Returns
=======

distance : number or symbolic expression.

Raises
======

TypeError : if other is not recognized as a GeometricEntity or is a
            GeometricEntity for which distance is not defined.

See Also
========

sympy.geometry.line.Segment.length
sympy.geometry.point.Point.taxicab_distance

Examples
========

>>> from sympy import Point, Line
>>> p1, p2 = Point(1, 1), Point(4, 5)
>>> l = Line((3, 1), (2, 2))
>>> p1.distance(p2)
5
>>> p1.distance(l)
sqrt(2)

The computed distance may be symbolic, too:

>>> from sympy.abc import x, y
>>> p3 = Point(x, y)
>>> p3.distance((0, 0))
sqrt(x**2 + y**2)

©r   z'not recognized as a GeometricEntity: %sc              3   óD   "  € T F  w  rW,
          ^,          x € K  	  R# 5i©r–   Nr‚   ©r'   r(   rT   s   &  r)   r*   Ú!Point.distance.<locals>.<genexpr>±  s   é € Ð?±Y©T¨Q˜q�u qŸjšj³Yùs   ‚ rG   Nz,distance between Point and %s is not defined)r.   r   r   r‰   r3   ÚtyperO   r   r   rP   rŽ   )rH   rQ   rR   ÚprG   s   &&   r)   rG   ÚPoint.distanceƒ  sÆ   € ôN ˜%¤×0Ò0ðYÜ˜e×)?Ñ)?Ô@�ô �eœU×#Ò#Ü×-Ñ-¨d´E¸%³LÓA‰DˆAÜœÑ?´S¸´YÓ?Ñ@ÓAÐAÜ˜5 *¨dÓ3ˆØÒÜÐJÌTÐRWË[ÕXÓYÐYÙ˜‹~Ðøô ô YÜÐ IÌDÐQVËKÕ WÓXÐXðYús   ˜B; Â;'C"c                ól   € \        V4      '       g   \        V4      p\        R \        W4       4       !  # )z.Return dot product of self with another Point.c              3   ó6   "  € T F  w  rW,          x € K  	  R # 5ir-   r‚   rª   s   &  r)   r*   ÚPoint.dot.<locals>.<genexpr>»  s   é € Ð2¡\™T˜Q�Q—S’S£\ùs   ‚)r   r   r   rP   )rH   r­   s   &&r)   ÚdotÚ	Point.dot·  s)   € ä˜1�~Š~Ü�a“ˆAÜÑ2¤S¨¤\Ó2Ñ3Ð3rL   c                óð   € \        V\        4      '       d   \        V 4      \        V4      8w  d   R# \        ;QJ d%    R \	        W4       4       F  '       d   K   R# 	  R# ! R \	        W4       4       4      # )z8Returns whether the coordinates of self and other agree.Fc              3   óH   "  € T F  w  rVP                  V4      x € K  	  R # 5ir-   )Úequalsrª   s   &  r)   r*   ÚPoint.equals.<locals>.<genexpr>Â  s   é € Ð<Ñ+;¡4 1�1—8‘8˜A—;�;Ó+;ùó   ‚ "T)r.   r   r2   r9   rP   re   s   &&r)   r¶   ÚPoint.equals½  sV   € ô ˜%¤×'Ò'¬3¨t«9¼¸E»
Ô+BÙß‹sÑ<¬3¨tÔ+;Ó<�sŒsÐ<ŠsÐ<ˆsÑ<¬3¨tÔ+;Ó<Ó<Ð<rL   c                ó�   € \        V4      pV P                   Uu. uF  qDP                  ! RRV/VB NK  	  pp\        VRR/ # u upi )a¶  Evaluate the coordinates of the point.

This method will, where possible, create and return a new Point
where the coordinates are evaluated as floating point numbers to
the precision indicated (default=15).

Parameters
==========

prec : int

Returns
=======

point : Point

Examples
========

>>> from sympy import Point, Rational
>>> p1 = Point(Rational(1, 2), Rational(3, 2))
>>> p1
Point2D(1/2, 3/2)
>>> p1.evalf()
Point2D(0.5, 1.5)

r˜   r   Fr‚   )r   r@   Úevalfr   )rH   ÚprecÚoptionsÚdpsr`   rB   s   &&,   r)   Ú_eval_evalfÚPoint._eval_evalfÄ  sK   € ô8 ˜$ÓˆØ59·Y²YÓ?±Y°—'’'Ñ+˜CÐ+ 7Ô+±YˆÐ?Ü�fÐ- uÑ-Ð-ùò @s   šAc                óô   € \        V\        4      '       g   \        V4      p\        V\        4      '       d2   W8X  d   V .# \        P                  W4      w  r#W 8X  d
   W#8X  d   V .# . # VP	                  V 4      # )aä  The intersection between this point and another GeometryEntity.

Parameters
==========

other : GeometryEntity or sequence of coordinates

Returns
=======

intersection : list of Points

Notes
=====

The return value will either be an empty list if there is no
intersection, otherwise it will contain this point.

Examples
========

>>> from sympy import Point
>>> p1, p2, p3 = Point(0, 0), Point(1, 1), Point(0, 0)
>>> p1.intersection(p2)
[]
>>> p1.intersection(p3)
[Point2D(0, 0)]

)r.   r   r   rO   Úintersection)rH   rQ   Úp1Úp2s   &&  r)   rÂ   ÚPoint.intersectionä  sk   € ô< ˜%¤×0Ò0Ü˜%“LˆEÜ�eœU×#Ò#ØŒ}Ø�v�Ü×/Ñ/°Ó<‰FˆBØŒz˜bœhØ�v�ØˆIØ×!Ñ! $Ó'Ð'rL   c                óÐ   € V 3V,           p\         P                  ! V Uu. uF  p\        V4      NK  	  up!  p\        \        V4      4      p\         P                  ! V!  ^8*  # u upi )a+  Returns `True` if there exists a line
that contains `self` and `points`.  Returns `False` otherwise.
A trivially True value is returned if no points are given.

Parameters
==========

args : sequence of Points

Returns
=======

is_collinear : boolean

See Also
========

sympy.geometry.line.Line

Examples
========

>>> from sympy import Point
>>> from sympy.abc import x
>>> p1, p2 = Point(0, 0), Point(1, 1)
>>> p3, p4, p5 = Point(2, 2), Point(x, x), Point(1, 2)
>>> Point.is_collinear(p1, p2, p3, p4)
True
>>> Point.is_collinear(p1, p2, p3, p5)
False

)r   rO   r�   r   rŸ   )rH   r@   r‘   r‹   s   &*  r)   Úis_collinearÚPoint.is_collinear  s]   € ðB �˜4•ˆÜ×+Ò+ÁÓ-GÁ¸1¬e°A®hÁÑ-GÑHˆÜ”d˜6“lÓ#ˆÜ× Ò  &Ñ)¨QÑ.Ð.ùò .Hs   ŸA#c           	     óî  € V 3V,           p\         P                  ! V Uu. uF  p\        V4      NK  	  up!  p\        \        V4      4      p\         P                  ! V!  ^8:  g   R# V^ ,          pV Uu. uF  qUV,
          NK  	  pp\        V Uu. uF%  p\        V4      VP                  V4      .,           NK'  	  up4      pVP                  4       w  rx\        V4      V9  d   R# R# u upi u upi u upi )ag  Do `self` and the given sequence of points lie in a circle?

Returns True if the set of points are concyclic and
False otherwise. A trivial value of True is returned
if there are fewer than 2 other points.

Parameters
==========

args : sequence of Points

Returns
=======

is_concyclic : boolean


Examples
========

>>> from sympy import Point

Define 4 points that are on the unit circle:

>>> p1, p2, p3, p4 = Point(1, 0), (0, 1), (-1, 0), (0, -1)

>>> p1.is_concyclic() == p1.is_concyclic(p2, p3, p4) == True
True

Define a point not on that circle:

>>> p = Point(1, 1)

>>> p.is_concyclic(p1, p2, p3)
False

FT)	r   rO   r�   r   rŸ   r   r²   Úrrefr2   )	rH   r@   r‘   r‹   rI   r­   ÚmatrÊ   Úpivotss	   &*       r)   Úis_concyclicÚPoint.is_concyclic3  sØ   € ðL �˜4•ˆÜ×+Ò+ÁÓ-GÁ¸1¬e°A®hÁÑ-GÑHˆÜ”d˜6“lÓ#ˆÜ× Ò  &Ñ)¨QÔ.ÙØ˜•ˆÙ&,Ó-¡f �f—*�*¡fˆÐ-ô ±FÓ;±F¨q”d˜1“g §¡ q£ 
×*Ð*±FÑ;Ó<ˆØ—x‘x“z‰ˆÜˆv‹;˜fÔ$ÙÙùò .Hùò
 .ùò <s   ŸC(Á4C-Â+C2c                ó4   € V P                   pVf   R# V'       * # )zjTrue if any coordinate is nonzero, False if every coordinate is zero,
and None if it cannot be determined.N)r%   )rH   r%   s   & r)   Ú
is_nonzeroÚPoint.is_nonzerok  s   € ð —,‘,ˆØŠ?ÙØŒ{ÐrL   c                ó�  € \         P                  V \        V4      4      w  r#VP                  ^8X  db   VP                  VP                  uw  rEw  rgWG,          We,          ,
          P	                  ^ 4      pVf   \        \        RV: RV: 24      4      h\        VP                  VP                  .4      p	V	P                  4       ^8  # )zkReturns whether each coordinate of `self` is a scalar
multiple of the corresponding coordinate in point p.
zCannot determine if z- is a scalar multiple of
                    )	r   rO   r‰   r@   r¶   r   r   r   r�   )
rH   r­   rR   rS   Úx1Úy1Úx2Úy2Úrvrž   s
   &&        r)   Úis_scalar_multipleÚPoint.is_scalar_multiplet  s¦   € ô ×)Ñ)¨$´°a³Ó9‰ˆà×Ñ !Ô#Ø!"§¡¨¯©Ð‰HˆR‘h�rØ•%˜"�%•-×'Ñ'¨Ó*ˆBØŠzÜ!¥*ã¢ð#ó#$ó %ð %ô �A—F‘F˜AŸF™FÐ#Ó$ˆØ�v‰v‹x˜!‰|ÐrL   c                óö   € V P                    Uu. uF  qP                  NK  	  pp\        V4      '       d   R# \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   R# R# u upi )zkTrue if every coordinate is zero, False if any coordinate is not zero,
and None if it cannot be determined.Fc              3   ó(   "  € T F  qR J x € K
  	  R # 5ir-   r‚   )r'   r`   s   & r)   r*   Ú Point.is_zero.<locals>.<genexpr>Ž  s   é € Ð*¡'˜Q�D�y£'ùs   ‚TN)r@   rÐ   r8   )rH   r`   Únonzeros   &  r)   r%   ÚPoint.is_zero‡  sV   € ð *.¯ªÓ3© A—<”<©ˆÐ3Üˆw�<Š<Ùß‹3Ñ*¡'Ó*�3�3Š3Ñ*¡'Ó*×*Ò*ÙÙùò 4s   �A6c                ó"   € \         P                  # )zš
Treating a Point as a Line, this returns 0 for the length of a Point.

Examples
========

>>> from sympy import Point
>>> p = Point(0, 1)
>>> p.length
0
)r   r5   rn   s   &r)   ÚlengthÚPoint.length’  s   € ô �v‰vˆrL   c           
     óè   € \         P                  V \        V4      4      w  r!\        \        W!4       UUu. uF+  w  r4\        W4,           \        P
                  ,          4      NK-  	  upp4      # u uppi )a  The midpoint between self and point p.

Parameters
==========

p : Point

Returns
=======

midpoint : Point

See Also
========

sympy.geometry.line.Segment.midpoint

Examples
========

>>> from sympy import Point
>>> p1, p2 = Point(1, 1), Point(13, 5)
>>> p1.midpoint(p2)
Point2D(7, 3)

)r   rO   rP   r
   r   ÚHalf)rH   r­   rR   r(   rT   s   &&   r)   ÚmidpointÚPoint.midpoint¡  sN   € ô6 ×)Ñ)¨$´°a³Ó9‰ˆÜ¼3¸q¼9ÔE¹9±4°1”h ¥¤q§v¡v�~Ö.¹9ÒEÓFÐFùÓEs   µ1A.
c                ó>   € \        ^ .\        V 4      ,          RR7      # )zGA point of all zeros of the same ambient dimension
as the current pointFrN   )r   r2   rn   s   &r)   rI   ÚPoint.origin¿  s   € ô �a�Sœ˜T›•]¨UÔ3Ð3rL   c                ól  € V P                   pV ^ ,          P                  '       d#   \        ^.V^,
          ^ .,          ,           4      # V ^,          P                  '       d$   \        ^ ^.V^,
          ^ .,          ,           4      # \        V ^,          ) V ^ ,          .V^,
          ^ .,          ,           4      # )a  Returns a non-zero point that is orthogonal to the
line containing `self` and the origin.

Examples
========

>>> from sympy import Line, Point
>>> a = Point(1, 2, 3)
>>> a.orthogonal_direction
Point3D(-2, 1, 0)
>>> b = _
>>> Line(b, b.origin).is_perpendicular(Line(a, a.origin))
True
)r‰   r%   r   )rH   r   s   & r)   Úorthogonal_directionÚPoint.orthogonal_directionÅ  sŽ   € ð  ×$Ñ$ˆà��7�?�?ˆ?Ü˜!˜  a¥¨!¨�}Õ,Ó-Ð-Ø��7�?�?ˆ?Ü˜!˜A˜ #¨¥'¨A¨3¥Õ.Ó/Ð/ô �t˜A•w�h  Q¥Ð(¨C°!­G°a°S­=Õ8Ó9Ð9rL   c                óê   € \         P                  \        V 4      \        V4      4      w  rVP                  '       d   \        R4      hWP	                  V4      VP	                  V4      ,          ,          # )aÊ  Project the point `a` onto the line between the origin
and point `b` along the normal direction.

Parameters
==========

a : Point
b : Point

Returns
=======

p : Point

See Also
========

sympy.geometry.line.LinearEntity.projection

Examples
========

>>> from sympy import Line, Point
>>> a = Point(1, 2)
>>> b = Point(2, 5)
>>> z = a.origin
>>> p = Point.project(a, b)
>>> Line(p, a).is_perpendicular(Line(p, b))
True
>>> Point.is_collinear(z, p, b)
True
ú"Cannot project to the zero vector.)r   rO   r%   r6   r²   )r(   rT   s   &&r)   ÚprojectÚPoint.projectß  sT   € ôD ×)Ñ)¬%°«(´E¸!³HÓ=‰ˆØ�9�9ˆ9ÜÐAÓBÐBØ—%‘%˜“(˜QŸU™U 1›XÕ%Õ&Ð&rL   c                óv   € \         P                  V \        V4      4      w  r!\        R \        W!4       4       !  # )a¢  The Taxicab Distance from self to point p.

Returns the sum of the horizontal and vertical distances to point p.

Parameters
==========

p : Point

Returns
=======

taxicab_distance : The sum of the horizontal
and vertical distances to point p.

See Also
========

sympy.geometry.point.Point.distance

Examples
========

>>> from sympy import Point
>>> p1, p2 = Point(1, 1), Point(4, 5)
>>> p1.taxicab_distance(p2)
7

c              3   óH   "  € T F  w  r\        W,
          4      x € K  	  R # 5ir-   ©r—   rª   s   &  r)   r*   Ú)Point.taxicab_distance.<locals>.<genexpr>%  s   é € Ð6©I¡D A”S˜�—Z�Z«Iùr¸   )r   rO   r   rP   ©rH   r­   rR   s   && r)   Útaxicab_distanceÚPoint.taxicab_distance  s1   € ô< ×)Ñ)¨$´°a³Ó9‰ˆÜÑ6¬C°¬IÓ6Ñ7Ð7rL   c                óÔ   € \         P                  V \        V4      4      w  r!V P                  '       d   VP                  '       d   \        R4      h\	        R \        W!4       4       !  # )am  The Canberra Distance from self to point p.

Returns the weighted sum of horizontal and vertical distances to
point p.

Parameters
==========

p : Point

Returns
=======

canberra_distance : The weighted sum of horizontal and vertical
distances to point p. The weight used is the sum of absolute values
of the coordinates.

Examples
========

>>> from sympy import Point
>>> p1, p2 = Point(1, 1), Point(3, 3)
>>> p1.canberra_distance(p2)
1
>>> p1, p2 = Point(0, 0), Point(3, 3)
>>> p1.canberra_distance(p2)
2

Raises
======

ValueError when both vectors are zero.

See Also
========

sympy.geometry.point.Point.distance

rì   c              3   óˆ   "  € T F8  w  r\        W,
          4      \        V4      \        V4      ,           ,          x € K:  	  R # 5ir-   rñ   rª   s   &  r)   r*   Ú*Point.canberra_distance.<locals>.<genexpr>S  s,   é € ÐJÁ	¹¸”c˜!�%“j¤# a£&¬3¨q«6¥/×2Ò2Ã	ùs   ‚A A)r   rO   r%   r6   r   rP   ró   s   && r)   Úcanberra_distanceÚPoint.canberra_distance'  sO   € ôR ×)Ñ)¨$´°a³Ó9‰ˆØ�<�<ˆ<˜AŸIŸI˜IÜÐAÓBÐBÜÑJÄÀAÄ	ÓJÑKÐKrL   c                ó&   € V \        V 4      ,          # )z\Return the Point that is in the same direction as `self`
and a distance of 1 from the originrñ   rn   s   &r)   ÚunitÚ
Point.unitU  s   € ð ”c˜$“iÕÐrL   r‚   N)é   )/Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úis_Pointr>   rJ   rU   r[   ra   rf   rj   ro   rr   ru   ry   r|   r   rƒ   ÚclassmethodrO   ÚstaticmethodrŸ   Úpropertyr‰   r¤   rG   r²   r¶   r¿   rÂ   rÇ   rÍ   rÐ   rØ   r%   rà   rä   rI   ré   rí   rô   rù   rü   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r)   r   r   *   sy  ø‡ € ñ>ð@ €HòF4òP,ò
%-òN!ò-ò'ò
òò$òò-ò>$ò-ò
*ð
 ñ4ó ð4ð" ñ?ó ð?ð* ñ>ó ð>ð ñ+/ó ð+/òZ2òh4ò=ô.ò@'(òR$/òL6ðp ñó ðòð& ñó ðð ñó ðòGð< ñ4ó ð4ð
 ñ:ó ð:ð2 ñ$'ó ð$'òL8òB,Lð\ ñ ó ö rL   r   c                   ó    a € ] tR tRt o Rt^tRR/R ltR t]R 4       t	RR	 lt
RR
 ltR tRR lt]R 4       t]R 4       t]R 4       tRtV tR# )r<   i\  a%  A point in a 2-dimensional Euclidean space.

Parameters
==========

coords
    A sequence of 2 coordinate values.

Attributes
==========

x
y
length

Raises
======

TypeError
    When trying to add or subtract points with different dimensions.
    When trying to create a point with more than two dimensions.
    When `intersection` is called with object other than a Point.

See Also
========

sympy.geometry.line.Segment : Connects two Points

Examples
========

>>> from sympy import Point2D
>>> from sympy.abc import x
>>> Point2D(1, 2)
Point2D(1, 2)
>>> Point2D([1, 2])
Point2D(1, 2)
>>> Point2D(0, x)
Point2D(0, x)

Floats are automatically converted to Rational unless the
evaluate flag is False:

>>> Point2D(0.5, 0.25)
Point2D(1/2, 1/4)
>>> Point2D(0.5, 0.25, evaluate=False)
Point2D(0.5, 0.25)

r0   Fc               ób   € V'       g   ^VR&   \        V/ VB p\        P                  ! V .VO5!  # )r–   r   ©r   r   r>   ©r?   r0   r@   rA   s   &$*,r)   r>   ÚPoint2D.__new__‘  ó3   € ßØˆF�5‰MÜ˜$Ð) &Ñ)ˆDÜ×%Ò% cÐ1¨DÓ1Ð1rL   c                ó
   € W8H  # r-   r‚   rY   s   &&r)   r[   ÚPoint2D.__contains__—  ó
   € Ø‰|ÐrL   c                ó^   € V P                   V P                  V P                   V P                  3# )zgReturn a tuple (xmin, ymin, xmax, ymax) representing the bounding
rectangle for the geometric figure.

)r`   Úyrn   s   &r)   ÚboundsÚPoint2D.boundsš  s#   € ð —‘˜Ÿ™ §¡¨¯©Ð/Ð/rL   Nc                ó   € \        V4      p\        V4      pT pVe   \        V^R7      pWR,          pVP                  w  rg\        W6,          WG,          ,
          WF,          W7,          ,           4      pVe	   WR,          pV# )zûRotate ``angle`` radians counterclockwise about Point ``pt``.

See Also
========

translate, scale

Examples
========

>>> from sympy import Point2D, pi
>>> t = Point2D(1, 0)
>>> t.rotate(pi/2)
Point2D(0, 1)
>>> t.rotate(pi/2, (2, 0))
Point2D(2, -1)

r§   )r   r   r   r@   )rH   ÚangleÚptÚcrR   r×   r`   r  s   &&&     r)   ÚrotateÚPoint2D.rotate£  sk   € ô& �‹JˆÜ�‹JˆàˆØŠ>Ü�r˜qÔ!ˆBØ�HˆBØ�w‰w‰ˆÜ�1•3˜�•9˜a�c A¥C�iÓ(ˆØŠ>Ø�HˆBØˆ	rL   c                ó  € V'       dP   \        V^R7      pV P                  ! V) P                  !  P                  W4      P                  ! VP                  !  # \        V P                  V,          V P
                  V,          4      # )a}  Scale the coordinates of the Point by multiplying by
``x`` and ``y`` after subtracting ``pt`` -- default is (0, 0) --
and then adding ``pt`` back again (i.e. ``pt`` is the point of
reference for the scaling).

See Also
========

rotate, translate

Examples
========

>>> from sympy import Point2D
>>> t = Point2D(1, 1)
>>> t.scale(2)
Point2D(2, 1)
>>> t.scale(2, 2)
Point2D(2, 2)

r§   )r   Ú	translater@   Úscaler`   r  )rH   r`   r  r  s   &&&&r)   r!  ÚPoint2D.scaleÃ  s_   € ÷, Ü�r˜qÔ!ˆBØ—>’> R C§:¡:Ñ.×4Ñ4°QÓ:×DÒDÀbÇgÁgÑNÐNÜ�T—V‘V˜A•X˜tŸv™v a�xÓ(Ð(rL   c           	     óì   € VP                   '       d   VP                  R8X  g   \        R4      hV P                  w  r#\	        \        ^^W#^.4      V,          P                  4       ^ ,          R,          !  # )zÝReturn the point after applying the transformation described
by the 3x3 Matrix, ``matrix``.

See Also
========
sympy.geometry.point.Point2D.rotate
sympy.geometry.point.Point2D.scale
sympy.geometry.point.Point2D.translate
zmatrix must be a 3x3 matrix:Nr–   N)é   r$  )Ú	is_MatrixÚshaper6   r@   r   r   Útolist)rH   Úmatrixr`   r  s   &&  r)   Ú	transformÚPoint2D.transformÞ  sb   € ð × × Ð  V§\¡\°VÔ%;ÜÐ:Ó;Ð;Ø�y‰y‰ˆÜ”v˜a  Q¨1 IÓ.¨vÕ5×=Ñ=Ó?ÀÕBÀ2ÕFÑGÐGrL   c                ó^   € \        V P                  V,           V P                  V,           4      # )a4  Shift the Point by adding x and y to the coordinates of the Point.

See Also
========

sympy.geometry.point.Point2D.rotate, scale

Examples
========

>>> from sympy import Point2D
>>> t = Point2D(0, 1)
>>> t.translate(2)
Point2D(2, 1)
>>> t.translate(2, 2)
Point2D(2, 3)
>>> t + Point2D(2, 2)
Point2D(2, 3)

)r   r`   r  )rH   r`   r  s   &&&r)   r   ÚPoint2D.translateí  s!   € ô* �T—V‘V˜a•Z §¡¨!¥Ó,Ð,rL   c                ó   € V P                   # )zŒ
Returns the two coordinates of the Point.

Examples
========

>>> from sympy import Point2D
>>> p = Point2D(0, 1)
>>> p.coordinates
(0, 1)
rX   rn   s   &r)   ÚcoordinatesÚPoint2D.coordinates  ó   € ð �y‰yÐrL   c                ó(   € V P                   ^ ,          # )zz
Returns the X coordinate of the Point.

Examples
========

>>> from sympy import Point2D
>>> p = Point2D(0, 1)
>>> p.x
0
rX   rn   s   &r)   r`   Ú	Point2D.x  ó   € ð �y‰y˜�|ÐrL   c                ó(   € V P                   ^,          # )zz
Returns the Y coordinate of the Point.

Examples
========

>>> from sympy import Point2D
>>> p = Point2D(0, 1)
>>> p.y
1
rX   rn   s   &r)   r  Ú	Point2D.y"  r3  rL   r‚   r-   )r”   r”   N)é    r6  )rÿ   r   r  r  r  r†   r>   r[   r  r  r  r!  r)  r   r.  r`   r  r  r	  r
  s   @r)   r<   r<   \  sŠ   ø‡ € ñ0ðd Ðð2 Uô 2òð ñ0ó ð0ôô@)ò6Hô-ð. ñó ðð ñó ðð ñó örL   r<   c                   ó¸   a € ] tR tRt o Rt^tRR/R ltR t]R 4       t	R t
R	 tR
 tRR ltR tRR lt]R 4       t]R 4       t]R 4       t]R 4       tRtV tR# )r=   i1  a¾  A point in a 3-dimensional Euclidean space.

Parameters
==========

coords
    A sequence of 3 coordinate values.

Attributes
==========

x
y
z
length

Raises
======

TypeError
    When trying to add or subtract points with different dimensions.
    When `intersection` is called with object other than a Point.

Examples
========

>>> from sympy import Point3D
>>> from sympy.abc import x
>>> Point3D(1, 2, 3)
Point3D(1, 2, 3)
>>> Point3D([1, 2, 3])
Point3D(1, 2, 3)
>>> Point3D(0, x, 3)
Point3D(0, x, 3)

Floats are automatically converted to Rational unless the
evaluate flag is False:

>>> Point3D(0.5, 0.25, 2)
Point3D(1/2, 1/4, 2)
>>> Point3D(0.5, 0.25, 3, evaluate=False)
Point3D(0.5, 0.25, 3)

r0   Fc               ób   € V'       g   ^VR&   \        V/ VB p\        P                  ! V .VO5!  # )r$  r   r  r  s   &$*,r)   r>   ÚPoint3D.__new__a  r  rL   c                ó
   € W8H  # r-   r‚   rY   s   &&r)   r[   ÚPoint3D.__contains__g  r  rL   c                 ó*   € \         P                  ! V !  # )aK  Is a sequence of points collinear?

Test whether or not a set of points are collinear. Returns True if
the set of points are collinear, or False otherwise.

Parameters
==========

points : sequence of Point

Returns
=======

are_collinear : boolean

See Also
========

sympy.geometry.line.Line3D

Examples
========

>>> from sympy import Point3D
>>> from sympy.abc import x
>>> p1, p2 = Point3D(0, 0, 0), Point3D(1, 1, 1)
>>> p3, p4, p5 = Point3D(2, 2, 2), Point3D(x, x, x), Point3D(1, 2, 6)
>>> Point3D.are_collinear(p1, p2, p3, p4)
True
>>> Point3D.are_collinear(p1, p2, p3, p5)
False
)r   rÇ   )r‘   s   *r)   Úare_collinearÚPoint3D.are_collinearj  s   € ôD ×!Ò! 6Ñ*Ð*rL   c                ó,  € V P                  V4      p\        \        R V 4       !  4      pVP                  V P                  ,
          V,          VP                  V P                  ,
          V,          VP
                  V P
                  ,
          V,          .# )a   
Gives the direction cosine between 2 points

Parameters
==========

p : Point3D

Returns
=======

list

Examples
========

>>> from sympy import Point3D
>>> p1 = Point3D(1, 2, 3)
>>> p1.direction_cosine(Point3D(2, 3, 5))
[sqrt(6)/6, sqrt(6)/6, sqrt(6)/3]
c              3   ó2   "  € T F  q^,          x € K  	  R# 5ir©   r‚   rŠ   s   & r)   r*   Ú+Point3D.direction_cosine.<locals>.<genexpr>¥  s   é € Ð'¡Q ˜!—t’t£Qùs   ‚)Údirection_ratior   r   r`   r  Úz)rH   Úpointr(   rT   s   &&  r)   Údirection_cosineÚPoint3D.direction_cosineŽ  sq   € ð, × Ñ  Ó'ˆÜ”Ñ'¡QÓ'Ñ(Ó)ˆØ—‘˜4Ÿ6™6Õ! QÕ&¨¯©°$·&±&Õ(8¸AÕ'=Ø—‘˜4Ÿ6™6Õ! QÕ&ð(ð 	(rL   c                ó®   € VP                   V P                   ,
          VP                  V P                  ,
          VP                  V P                  ,
          .# )zæ
Gives the direction ratio between 2 points

Parameters
==========

p : Point3D

Returns
=======

list

Examples
========

>>> from sympy import Point3D
>>> p1 = Point3D(1, 2, 3)
>>> p1.direction_ratio(Point3D(2, 3, 5))
[1, 1, 2]
)r`   r  rC  )rH   rD  s   &&r)   rB  ÚPoint3D.direction_ratio©  s8   € ð, —‘˜4Ÿ6™6Õ! E§G¡G¨d¯f©fÕ$4°u·w±wÀÇÁÕ7GÐIÐIrL   c                ó¬   € \        V\        4      '       g   \        V^R7      p\        V\        4      '       d   W8X  d   V .# . # VP	                  V 4      # )aø  The intersection between this point and another GeometryEntity.

Parameters
==========

other : GeometryEntity or sequence of coordinates

Returns
=======

intersection : list of Points

Notes
=====

The return value will either be an empty list if there is no
intersection, otherwise it will contain this point.

Examples
========

>>> from sympy import Point3D
>>> p1, p2, p3 = Point3D(0, 0, 0), Point3D(1, 1, 1), Point3D(0, 0, 0)
>>> p1.intersection(p2)
[]
>>> p1.intersection(p3)
[Point3D(0, 0, 0)]

r§   )r.   r   r   r=   rÂ   re   s   &&r)   rÂ   ÚPoint3D.intersectionÁ  sL   € ô< ˜%¤×0Ò0Ü˜% QÔ'ˆEÜ�eœW×%Ò%ØŒ}Ø�v�ØˆIØ×!Ñ! $Ó'Ð'rL   Nc                ó.  € V'       dO   \        V4      pV P                  ! V) P                  !  P                  WV4      P                  ! VP                  !  # \        V P                  V,          V P
                  V,          V P                  V,          4      # )a~  Scale the coordinates of the Point by multiplying by
``x`` and ``y`` after subtracting ``pt`` -- default is (0, 0) --
and then adding ``pt`` back again (i.e. ``pt`` is the point of
reference for the scaling).

See Also
========

translate

Examples
========

>>> from sympy import Point3D
>>> t = Point3D(1, 1, 1)
>>> t.scale(2)
Point3D(2, 1, 1)
>>> t.scale(2, 2)
Point3D(2, 2, 1)

)r=   r   r@   r!  r`   r  rC  )rH   r`   r  rC  r  s   &&&&&r)   r!  ÚPoint3D.scaleç  sh   € ÷, Ü˜“ˆBØ—>’> R C§:¡:Ñ.×4Ñ4°Q¸1Ó=×GÒGÈÏÉÑQÐQÜ�t—v‘v˜a•x §¡¨¥¨4¯6©6°!­8Ó4Ð4rL   c           
     ó  € VP                   '       d   VP                  R8X  g   \        R4      hV P                  w  r#p\	        V4      p\        \        ^^W#V^.4      V,          P                  4       ^ ,          R,          !  # )z¹Return the point after applying the transformation described
by the 4x4 Matrix, ``matrix``.

See Also
========
sympy.geometry.point.Point3D.scale
sympy.geometry.point.Point3D.translate
zmatrix must be a 4x4 matrix:Nr$  N)é   rN  )r%  r&  r6   r@   r   r=   r   r'  )rH   r(  r`   r  rC  rž   s   &&    r)   r)  ÚPoint3D.transform  sp   € ð × × Ð  V§\¡\°VÔ%;ÜÐ:Ó;Ð;Ø—)‘)‰ˆˆaÜ�fÓˆÜœ  1 q¨Q° lÓ3°AÕ5×=Ñ=Ó?ÀÕBÀ2ÕFÑGÐGrL   c                ó‚   € \        V P                  V,           V P                  V,           V P                  V,           4      # )a  Shift the Point by adding x and y to the coordinates of the Point.

See Also
========

scale

Examples
========

>>> from sympy import Point3D
>>> t = Point3D(0, 1, 1)
>>> t.translate(2)
Point3D(2, 1, 1)
>>> t.translate(2, 2)
Point3D(2, 3, 1)
>>> t + Point3D(2, 2, 2)
Point3D(2, 3, 3)

)r=   r`   r  rC  )rH   r`   r  rC  s   &&&&r)   r   ÚPoint3D.translate  s+   € ô* �t—v‘v •z 4§6¡6¨A¥:¨t¯v©v¸­zÓ:Ð:rL   c                ó   € V P                   # )z”
Returns the three coordinates of the Point.

Examples
========

>>> from sympy import Point3D
>>> p = Point3D(0, 1, 2)
>>> p.coordinates
(0, 1, 2)
rX   rn   s   &r)   r.  ÚPoint3D.coordinates(  r0  rL   c                ó(   € V P                   ^ ,          # )z}
Returns the X coordinate of the Point.

Examples
========

>>> from sympy import Point3D
>>> p = Point3D(0, 1, 3)
>>> p.x
0
rX   rn   s   &r)   r`   Ú	Point3D.x7  r3  rL   c                ó(   € V P                   ^,          # )z}
Returns the Y coordinate of the Point.

Examples
========

>>> from sympy import Point3D
>>> p = Point3D(0, 1, 2)
>>> p.y
1
rX   rn   s   &r)   r  Ú	Point3D.yF  r3  rL   c                ó(   € V P                   ^,          # )z}
Returns the Z coordinate of the Point.

Examples
========

>>> from sympy import Point3D
>>> p = Point3D(0, 1, 1)
>>> p.z
1
rX   rn   s   &r)   rC  Ú	Point3D.zU  r3  rL   r‚   )r”   r”   r”   N)r6  r6  r6  )rÿ   r   r  r  r  r†   r>   r[   r  r=  rE  rB  rÂ   r!  r)  r   r  r.  r`   r  rC  r  r	  r
  s   @r)   r=   r=   1  sª   ø‡ € ñ+ðZ Ðð2 Uô 2òð ñ!+ó ð!+òF(ò6Jò0$(ôL5ò6Hô;ð. ñó ðð ñó ðð ñó ðð ñó örL   r=   ),r  r7   Ú
sympy.corer   r   r   Úsympy.core.addr   Úsympy.core.containersr   Úsympy.core.numbersr   Úsympy.core.parametersr   Úsympy.simplify.simplifyr	   r
   Úsympy.geometry.exceptionsr   Ú(sympy.functions.elementary.miscellaneousr   Ú$sympy.functions.elementary.complexesr   Ú(sympy.functions.elementary.trigonometricr   r   Úsympy.matricesr   Úsympy.matrices.expressionsr   Úsympy.utilities.iterablesr   r   Úsympy.utilities.miscr   r   r   Úentityr   Úmpmath.libmp.libmpfr   r   r<   r=   r‚   rL   r)   Ú<module>rj     sq   ðñó& ç 'Ñ 'Ý Ý 'Ý $Ý 3ß 7Ý 3Ý 9Ý 3ß =Ý !Ý 0ß 7ß CÑ Cå "å +ôo ˆNô o ôdSˆeô Sôjqˆeö qrL   