
    \h0                         S SK JrJr  S SKJr  S SKJrJr  S SKJ	r	  S SK
JrJrJr  S SKJrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S	 rS
 rS rg)    )Rationalpi)S)Dummysymbols)sqrt)asincossin)
LinePointRaySegmentPoint3DLine3DRay3D	Segment3DPlaneCircle)are_coplanar)raisesc                  0  ^^ [        SSS9u  pp#n[        SSS5      m[        SSS5      n[        SSS5      n[        TXV5      n[        TSS	9n[        TU5      n	[        US
S	9n
[        [        SSS5      SS	9n[        [        SSS5      SS	9n[        TSS	9n[        TSS	9n[        TSS	9n[        USS	9n[        [        SSS5      [        SSS5      5      n[        [        SSS5      [        SSS5      5      n[        [        SSS5      [        SSS5      5      n[	        [
        U4S j5        [        TXV5      [        TXe5      :w  d   e[        TXV5      R                  [        TXe5      5      (       d   e[        TXV5      R                  T5      (       d   e[        TXV5      R                  [        TS5      5      SL d   e[        TSS	9R                  [        TS5      5      (       d   eU[        [        SSS5      SS	9:X  d   eXx:w  d   eX:X  d   eU
[        [        SSS5      S
S	9:X  d   eU
R                  XU5      U SU-  -   SU-  -   S-
  :X  d   eUR                  XU5      U SU-  -
  U-   :X  d   eUR                  T:X  d   eUR                  T:X  d   eU
R                  U:X  d   eUR                  S:X  d   eU
R                  S
:X  d   eTU;   d   eTU;   d   eXj;   d   eUR                  [        SS5      5      T:X  d   eUR                  [        SSS5      5      mT[        [        SS5      [        SS5      [        SS5      5      :X  d   eTU;   d   eUR                  [        [        SS5      [        SS5      5      5      nU[        [        SSS5      [        [        SS5      [        SS5      [        SS5      5      5      :X  d   eUU;   d   e[!        5       nUR#                  5       nUR%                  U5      R'                  U5      n[)        UR+                  US5      UR+                  US5      5      nUR                  U;  a  UR,                  U;  d   eUR                  U5      R/                  U5      (       d   eUR                  [1        [        SS5      [        SS5      5      5      [)        [        [        SS5      [        SS5      [        SS5      5      [        [        SS5      [        SS5      [        SS5      5      5      :X  d   eUR                  [3        [        SS5      [        SS5      5      5      [5        [        [        SS5      [        SS5      [        SS5      5      [        [        SS5      [        SS5      [        SS5      5      5      :X  d   eUR%                  UR6                  5      UR%                  U5      :X  d   eUR9                  U5      SL d   eUR9                  U5      (       d   eUR9                  [        TU5      5      (       d   eUR9                  U5      SL d   eUR;                  U5      (       d   eUR;                  U5      (       d   eUR;                  U5      (       d   eUR;                  U5      SL d   eUR;                  U5      SL d   eUR;                  [        SS5      5      (       d   eUR;                  S5      SL d   eUR=                  UR'                  X45      5      S:X  d   eUR=                  UR'                  X45      5      S:X  d   eUR=                  UR'                  U5      5      S:X  d   eUR=                  UR'                  U5      5      S:X  d   eUR                  R=                  UR'                  U5      5      R?                  5       S:X  d   eUR                  R=                  UR'                  U5      5      R?                  5       S:X  d   eUR'                  U5      [        [A        S 5      * [C        U5      -  S -  S[A        S5      -  [E        U5      -  S-  -   [A        S 5      [C        U5      -  S!-  [A        S5      [E        U5      -  S-  -   [A        S 5      [C        U5      -  S-  5      :X  d   eUR'                  X45      [        SU-  U-
  USU-  -   SU-  5      :X  d   eUR=                  [        SSS5      5      S[A        S5      -  S-  :X  d   eUR=                  [        SSS5      5      S"[A        S5      -  :X  d   eUR=                  UR                  5      S:X  d   eUR=                  U5      S:X  d   eUR=                  U5      S:X  d   eUR=                  [)        [        SSS5      [        SSS"5      5      5      UR=                  [        SSS"5      5      s=:X  a  S"[A        S5      -  S-  :X  d   e   eUR=                  [)        [        SSS"5      [        SSS5      5      5      UR=                  [        SSS5      5      s=:X  a  S[A        S5      -  S-  :X  d   e   eUR=                  [)        [        SSS5      [        SSS5      5      5      S:X  d   eUR=                  [)        [        SSS5      [        SSS5      5      5      S:X  d   eUR=                  [)        [        SSS5      [        S#SS$5      5      5      UR=                  [        SSS5      5      s=:X  a  S[A        S5      -  S-  :X  d   e   eUR=                  [        [        SSS5      S%S	95      [A        S5      :X  d   eUR=                  [5        [        SSS"5      / S&QS'95      S"[A        S5      -  S-  :X  d   eUR=                  [5        [        SSS5      / S(QS'95      S:X  d   eURG                  U5      [H        S-  :X  d   eURG                  U5      S:X  d   eURG                  U5      S:X  d   eURG                  [        [        SSS5      [        SS"S5      5      5      [K        [A        S5      S-  5      * :X  d   eURG                  [5        [        SS"S5      [        SSS5      5      5      [K        [A        S5      S-  5      :X  d   eURG                  [)        [        SSS5      [        SSS"5      5      5      [K        S[A        S)5      -  S)-  5      :X  d   e[M        UUU5      SL d   e[M        U5      SL d   e[M        [        SSS5      [        SSS5      [        SSS5      [        SSS5      5      (       d   e[M        [        TXV5      [        TXe5      5      (       d   e[        RN                  " XxU
5      SL d   e[        RN                  " U5      SL d   e[	        [
        S* 5        [	        [
        S+ 5        URQ                  [        SSS5      5      [        [        SSS5      SS	9:X  d   e[        SS,5      mTRS                  5       [        [        SSS5      S-5      :X  d   eTRS                  [        SSS5      5      [        [        SSS5      S-5      :X  d   eTRS                  S.S5      [        [        SSS5      S/5      :X  d   e[	        [
        U4S0 j5        [        SSS5      [        SSS5      nnSn[        UUS	9mTRS                  UU5      [        US,5      :X  d   e[        U6 nTRS                  UU5      [        US15      :X  d   e[        UUR6                  S	9RS                  UUU-   5      [        [        SSS5      S,5      :X  d   e[        UUS	9RS                  UUU-   5      [        [        SSS5      S15      :X  d   e[        UUR6                  S	9RS                  UUU-   5      [        [        SSS5      S,5      :X  d   e[        USS	9mTRS                  5       [        US,S	9:X  d   eURU                  U5      U/:X  d   eURU                  UR                  5      UR                  /:X  d   eURU                  U5      [        [        S2S"S5      [        SS"S5      5      /:X  d   eURU                  [        [        SSS"5      [        S"S"S5      5      5      [        S[        S2S5      [        SS5      5      /:X  d   eURU                  [        [        SSS5      S3S	95      [        [        S4S5S5      [        S6S7S5      5      /:X  d   eURU                  [5        [        SSS5      [        SSS"5      5      5      [        SSS5      /:X  d   eURU                  [)        [        SSS5      [        SSS"5      5      5      / :X  d   eURU                  [        [        SS5      [        S"S5      5      5      [        [        SS5      [        SS"5      S5      /:X  d   e[3        [        SS5      [        S"S5      5      n[        S8SS	9RU                  U5      [5        [        SS5      [        S"S5      5      /:X  d   eURU                  U5      [        [        SSS5      [        S9SS5      5      /:X  d   eURU                  U5      [        [        SSS5      [        SSS5      5      /:X  d   eURU                  U5      [        [        SSS5      [        SSS5      5      /:X  d   eURU                  U5      / :X  d   eURU                  U5      [        [        SSS5      [        S9SS5      5      /:X  d   eURU                  U5      [        [        SSS5      [        S9SS55      5      /:X  d   eUR#                  5       U;   d   eUR#                  SS:9U;   d   eURU                  UR                  5      S   R/                  UR                  5      (       d   eURU                  U5      S   R/                  [        [        S2S"S5      [        SS"S5      5      5      (       d   e[        S8SS	9nURU                  [        TS;5      5      S   R/                  [        SS<5      5      (       d   eURU                  [5        TS;5      5      S   R/                  [3        SS;5      5      (       d   eURU                  [)        TS=5      5      S   R/                  [)        TS=5      5      (       d   eURU                  [        TS>S	95      S   R/                  U5      (       d   eURU                  [        TSS	95      S   R/                  [        TS?[H        -  SS4S'95      (       d   eURU                  [        TS@S	95      S   R/                  [        TSAS'95      (       d   eURU                  [        TSBS	95      S   R/                  [        TSCS'95      (       d   eURU                  [        TSDS	95      S   R/                  [        TSES'95      (       d   eUR#                  5       U;   d   e[W        URU                  [5        [        SSS5      [        SSS5      5      5      5      S:X  d   eURU                  U5      S   R/                  U5      (       d   eUR/                  [        TSS	95      SL d   eUR/                  U5      (       d   eUR/                  [        TSFS	95      (       d   eUR/                  [        TSSS5[A        S5      -  4S	95      (       d   eUR/                  T5      SL d   e[        [        [        SGSH5      [        SISJ5      [        SKSL5      5      [        [        SGSM5      [        SNSO5      [        SKSL5      5      5      n[        [        [        SPSL5      [        SQSL5      [        SRSL5      5      [Y        SS5      * [Y        ST5      * [Y        SU5      45      n[[        URU                  U5       Vs/ s H  nUR]                  S5      PM     sn5      SV:X  d   eg s  snf )WNz	x y z u vT)realr            r   r   r   normal_vectorr   r   r      )r   r   r   i)r   r   r   r   r   )r      r   )r#   r   r      r#   	   c                     > [        T T T 5      $ )Nr   )p1s   W/var/www/auris/envauris/lib/python3.13/site-packages/sympy/geometry/tests/test_plane.py<lambda>test_plane.<locals>.<lambda>   s    uRR0    F            
   r   r   r   )r   r               )   r;   r;   )r   r   r9   )direction_ratio)r'   r   r      c                  D    [         R                  " [        SSS5      5      $ )Nr   )r   are_concurrentr    r/   r,   r-   r.      s    u33GAq!4DEr/   c                      [        SSS9$ )Nr    r5   r   r*   r@   r/   r,   r-   r.      s    uYiHr/   r   r   r   )r   r   r   r   r   r   )r   r   r'   c                  *   > T R                  SSS5      $ )NrC   r   )r   r   r   )perpendicular_plane)ps   r,   r-   r.      s    q44Y	9Ur/   )r'   r   r   r;   )r   r"   r   iii)r   r   r   r%   )seed)r   r%   r   )g?g333333?r   )   r   r   )r   r   p   rJ   )r2   r   r   )r   r   )r   r   r2   )r   r2   r   )r'   r'   rK   )r   r'   r   )r   r   rG   l   q,5 l    PrN0l6/, l     I5 l   AP<IK l    @ k l     z5 lAk3+ l     cR~ l   muJ9 l1a l   n!c z9.00000087501922z4.81170658872543e-13z0.0z[Point3D(4.0, -0.89, 2.3)])/r   r   r   r   r   
ValueErroris_coplanarr   equationr+   r   
projectionr   r   projection_liner   r   random_pointperpendicular_linearbitrary_pointr   subsp2equalsr   r   r   argsis_parallelis_perpendiculardistancesimplifyr   r   r
   angle_betweenr   r	   r   r?   parallel_planerE   intersectionlenr   strn)xyzuvrU   p3pl3pl4pl4bpl5pl6pl7pl8pl9pl10pl11l1l2l3ltrasbZra   irF   r+   s                                @@r,   
test_planer}      s_   Kd3MA!	Aq	B	Aq	B	Aq	B
B
C
)
,CR=D
)
,C
1a 	
:C
2r"*
=C
)
,C
*
-C:.D9-D	1a '!R"3	4B	2q!71a#3	4B	2q!71b!#4	5B
:01Rb" 1111R((r2):;;;;R((,,,,R((A75@@@9-99&Q-HHHH%1a(
CCCC::;;%1a(	BBBB<<a A!GacMB$6666<<a A!GaK///66R<<66R<<66R<<	)))	)))999999>>%1+&",,,wq!Q'(AAAAGGGG8O8Dq!eAqk:;Awq!Q'!Q!QQYZ[]^Q_)`aaaa8O8 	AAq!11!4A!&&A,q!-A44s?qtt3..q!((++++wuQ{E!QK@A!Q!Q"aQSZ[cdegh[ikstuwxky  |D  EF  HI  |J  TK  LL L Ls5A;a<=WXb!_hr1oxAOQXYabdfgYhjrsuwxjy  |D  EG  IJ  |K  RL  MM M M!!!&&)S-C-CA-FFFF??35(((??3??4B<((((??2%'''$$$$$$$$$$$$$---#u,,,Y	 :;;;;'5000<<++A12a777<<++A12a777<<++A./1444<<++A./144466??3..q12;;=BBB66??3..q12;;=BBBq!Wd2hYs1v-=b-@	$q'	#a&. HSVOB.aQ1AA48CPQF?STCT&V V V Vq$!aQqS!A#(FFFF<<1a()QtAwYq[888<<1a()QtAwY666<<1$$$<<!!!<<q   <<	'!Q"2GAq!4DEFWQ1%&6*+DG)A+6 6 6 6 6<<	'!Q"2GAq!4DEFWQ1%&6*+DG)A+6 6 6 6 6<<	'!Q"2GB24FGHAMMM<<	'"a"4gb!R6HIJaOOO<<	'"a"4gb!R6HIJWRB'(8,-d1gIaK8 8 8 8 8<<gaA.iHITRSWTTT<<gaA.
KLPQRVWXRYPYZ[P[[[[<<gaA.
KLPQQQQ S!RT)))S!Q&&&S!Q&&&VGAq!$4gaA6FGH	d1gai  U71a#3WQ15EFGT!WQY  Ywq!Q'7Aq9IJKQtCy[_   B#u,,,u$$$1a('!Q*:1a'!Q*, , , ,b")5R+<====#.%777$---
:EF
:HIgaA./5Aq9IDN4P P P P 	i#A  "eGAq!,<i&HHHH  Aq!12gaA	*+ + +   I6gaA
+, , , :UV1aWQ1-qAAaq!A  A&%9*====A  A&%:*>>>>!&&)==aQGgaA	*+ + + !$88AEBgaA
+, , , !&&)==aQGgaA	*+ + + 	ay)A  "eAY&GGGGC SE)))CFF#x///C wq!QAq!12%4 4 4 4F71Qq>71Qq>BC8Aq>8B?3H5 5 5 5E'!Q"2*M 
WS#q)73R+@ABC C CE'!Q"2GAq!4DEFArK   IgaA&61a8HIJbPPPDq!eAqk:;Q!Q3@5 5 5 5E!QKq!%A0==a@eAqk5A;'E) ) ) )C VGAq!,<gb!Q>O%P$QQQQT"vgaA.>1a@P'Q&RRRRC VGAq!,<gaQ>O%P$QQQQS!R'''D!fWQ1-=wr1a?P&Q%RRRRC VGAq!,<gb!S>Q%R$SSSS$$$#s*** CFF#A&--cff5555C #**6'!Q2BGAqRSDT+UVVVV
	
3CF2z23A6==d9m>\]]]]E"j1215<<SJ=WXXXXIb*56q9@@2zAZ[[[[E"K@A!DKKCPPPPE"J?@CJJrC"Ha#346 6 6 6E"J?@CJJr;/1 1 1 1E"J?@CJJr:.0 0 0 0E"MBCAFMMr:.0 0 0 0$$$sgaA&61a8H IJKqPPPC #**3////::eBj9:eCCC::c???::eBk:;;;;::eBq!Sa[.ABCCCC::b>U""" 
? !13CD /BD @ !1?C /BD
EB 
wxAAAC %&&+A)B(B%
B  34 31A 345'( ( (4s   `Aac            	         [        [        SSS5      SS9n [        SS5      nU R                  U5      [        [	        SS5      [	        SS5      [	        SS5      5      :X  d   e[        SS5      [        SS5      pSn[        X#S9nUR                  X!5      [        [        SSS5      S	5      :X  d   e[        S
SS5      R                  S5      [        SSS5      /:X  d   eg )Nr   r   r   r   r&   r   r   r$   rB   )r   r   r   )r   r   r   )r   r   r   )r   r   )r   r   r   rO   r   rE   r^   )Arz   rx   r{   rF   s        r,   test_dimension_normalizationr      s    gaAi8AaA<<?eHQNHQNHQPQNSSSSA;1qAa!A  &%1a0@)*LLLLIy 

,v
5Aq>"23 3 3r/   c                    ^^ [        S5      u  mp[        SSS5      [        SSS5      [        SSS5      pCn[        X#U5      mTR                  ST5      T[	        S[        S5      -  S-  5      0:X  d   eTR                  SX5      U SUS0:X  d   eTR                  UT5      U:X  d   e[        [        UU4S j5        [        [        UU4S	 j5        [        [        UU4S
 j5        g )Nzt, u vr   r   r   r9   r   r   r3   r   c                  (   > T R                  ST5      $ )NrB   parameter_valuerF   rv   s   r,   r-   &test_parameter_value.<locals>.<lambda>
  s    q00A>r/   c            	      d   > T R                  [        [        SS5      [        SS5      5      T5      $ )Nr   r   )r   r   r   r   s   r,   r-   r     s&    q00eAqk5A;1OQRSr/   c                  *   > T R                  STS5      $ )Nr   r   r   r   s   r,   r-   r     s    q00QBr/   )r   r   r   r   r	   r   r   rL   )re   rf   r+   rU   rg   rF   rv   s        @@r,   test_parameter_valuer     s    hGAqq!Qq!Qq!QBBbbAZ+4$r(
23F/GGGGZ.1aA,>>>R#r)))
:>?
:ST
:BCr/   N) sympy.core.numbersr   r   sympy.core.singletonr   sympy.core.symbolr   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr	   r
   r   sympy.geometryr   r   r   r   r   r   r   r   r   r   sympy.geometry.utilr   sympy.testing.pytestr   r}   r   r   r@   r/   r,   <module>r      s8    - " . 9 E E f f f , 'h(V
3	Dr/   