
    sg0                         d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d	 Zd
 Zd Zy)    )Rationalpi)S)Dummysymbols)sqrt)asincossin)
LinePointRaySegmentPoint3DLine3DRay3D	Segment3DPlaneCircle)are_coplanar)raisesc                  /   t        dd      \  } }}}}t        ddd      t        ddd      }t        ddd      }t        ||      }t        d	      }t        |      }	t        |d
	      }
t        t        ddd      d	      }t        t        ddd      d	      }t        d	      }t        d	      }t        d	      }t        |d	      }t        t        ddd      t        ddd            }t        t        ddd      t        ddd            }t        t        ddd      t        ddd            }t	        t
        fd       t        ||      t        ||      k7  sJ t        ||      j                  t        ||            sJ t        ||      j                        sJ t        ||      j                  t        d            du sJ t        d	      j                  t        d            sJ |t        t        ddd      d	      k(  sJ ||k7  sJ ||	k(  sJ |
t        t        ddd      d
	      k(  sJ |
j                  | ||      | d|z  z   d|z  z   dz
  k(  sJ |j                  | ||      | d|z  z
  |z   k(  sJ |j                  k(  sJ |j                  k(  sJ |
j                  |k(  sJ |j                  dk(  sJ |
j                  d
k(  sJ |v sJ |v sJ ||
v sJ |j                  t        dd            k(  sJ |j                  t        ddd            t        t        dd      t        dd      t        dd            k(  sJ |v sJ |j                  t        t        dd      t        dd                  }|t        t        ddd      t        t        dd      t        dd      t        dd                  k(  sJ ||v sJ t!               }|j#                         }|j%                  |      j'                  |      }t)        |j+                  |d      |j+                  |d            }|j                  |vr|j,                  |vsJ |j                  |      j/                  |      sJ |j                  t1        t        dd      t        dd                  t)        t        t        dd      t        dd      t        dd            t        t        dd      t        dd      t        dd                  k(  sJ |j                  t3        t        dd      t        dd                  t5        t        t        dd      t        dd      t        dd            t        t        dd      t        dd      t        dd                  k(  sJ |j%                  |j6                        |j%                  |      k(  sJ |j9                  |      du sJ |j9                  |      sJ |j9                  t        |            sJ |j9                  |      du sJ |j;                  |      sJ |j;                  |      sJ |j;                  |      sJ |j;                  |      du sJ |j;                  |      du sJ |j;                  t        dd            sJ |j;                  d      du sJ |j=                  |j'                  ||            dk(  sJ |j=                  |j'                  ||            dk(  sJ |j=                  |j'                  |            dk(  sJ |j=                  |j'                  |            dk(  sJ |j                  j=                  |j'                  |            j?                         dk(  sJ |j                  j=                  |j'                  |            j?                         dk(  sJ |j'                  |      t        tA        d        tC        |      z  d z  dtA        d      z  tE        |      z  dz  z   tA        d       tC        |      z  d!z  tA        d      tE        |      z  dz  z   tA        d       tC        |      z  dz        k(  sJ |j'                  ||      t        d|z  |z
  |d|z  z   d|z        k(  sJ |j=                  t        ddd            dtA        d      z  dz  k(  sJ |j=                  t        ddd            d"tA        d      z  k(  sJ |j=                  |j                        dk(  sJ |j=                  |      dk(  sJ |j=                  |      dk(  sJ |j=                  t)        t        ddd      t        ddd"                  |j=                  t        ddd"            cxk(  rd"tA        d      z  dz  k(  sJ  J |j=                  t)        t        ddd"      t        ddd                  |j=                  t        ddd            cxk(  rdtA        d      z  dz  k(  sJ  J |j=                  t)        t        ddd      t        ddd                  dk(  sJ |j=                  t)        t        ddd      t        ddd                  dk(  sJ |j=                  t)        t        ddd      t        d#dd$                  |j=                  t        ddd            cxk(  rdtA        d      z  dz  k(  sJ  J |j=                  t        t        ddd      d%	            tA        d      k(  sJ |j=                  t5        t        ddd"      g d&'            d"tA        d      z  dz  k(  sJ |j=                  t5        t        ddd      g d('            dk(  sJ |jG                  |      tH        dz  k(  sJ |jG                  |      dk(  sJ |jG                  |      dk(  sJ |jG                  t        t        ddd      t        dd"d                  tK        tA        d      dz         k(  sJ |jG                  t5        t        dd"d      t        ddd                  tK        tA        d      dz        k(  sJ |jG                  t)        t        ddd      t        ddd"                  tK        dtA        d)      z  d)z        k(  sJ tM        |||      du sJ tM        |      du sJ tM        t        ddd      t        ddd      t        ddd      t        ddd            sJ tM        t        ||      t        ||            sJ t        jN                  |||
      du sJ t        jN                  |      du sJ t	        t
        d*        t	        t
        d+        |jQ                  t        ddd            t        t        ddd      d	      k(  sJ t        dd,      jS                         t        t        ddd      d-      k(  sJ jS                  t        ddd            t        t        ddd      d-      k(  sJ jS                  d.d      t        t        ddd      d/      k(  sJ t	        t
        fd0       t        ddd      t        ddd      }}d}t        ||	      jS                  ||      t        |d,      k(  sJ t        | }jS                  ||      t        |d1      k(  sJ t        ||j6                  	      jS                  |||z         t        t        ddd      d,      k(  sJ t        ||	      jS                  |||z         t        t        ddd      d1      k(  sJ t        ||j6                  	      jS                  |||z         t        t        ddd      d,      k(  sJ t        |d	      jS                         t        |d,	      k(  sJ |jU                  |      |gk(  sJ |jU                  |j                        |j                  gk(  sJ |jU                  |      t        t        d2d"d      t        dd"d            gk(  sJ |jU                  t        t        ddd"      t        d"d"d                  t        dt        d2d      t        dd            gk(  sJ |jU                  t        t        ddd      d3	            t        t        d4d5d      t        d6d7d            gk(  sJ |jU                  t5        t        ddd      t        ddd"                  t        ddd      gk(  sJ |jU                  t)        t        ddd      t        ddd"                  g k(  sJ |jU                  t        t        dd      t        d"d                  t        t        dd      t        dd"      d      gk(  sJ t3        t        dd      t        d"d            }t        d8d	      jU                  |      t5        t        dd      t        d"d            gk(  sJ |jU                  |      t        t        ddd      t        d9dd            gk(  sJ |jU                  |      t        t        ddd      t        ddd            gk(  sJ |jU                  |      t        t        ddd      t        ddd            gk(  sJ |jU                  |      g k(  sJ |jU                  |      t        t        ddd      t        d9dd            gk(  sJ |jU                  |      t        t        ddd      t        d9dd5            gk(  sJ |j#                         |v sJ |j#                  d:      |v sJ |jU                  |j                        d   j/                  |j                        sJ |jU                  |      d   j/                  t        t        d2d"d      t        dd"d                  sJ t        d8d	      }|jU                  t        d;            d   j/                  t        dd<            sJ |jU                  t5        d;            d   j/                  t3        dd;            sJ |jU                  t)        d=            d   j/                  t)        d=            sJ |jU                  t        d>	            d   j/                  |      sJ |jU                  t        d	            d   j/                  t        d?tH        z  ddf'            sJ |jU                  t        d@	            d   j/                  t        dA'            sJ |jU                  t        dB	            d   j/                  t        dC'            sJ |jU                  t        dD	            d   j/                  t        dE'            sJ |j#                         |v sJ tW        |jU                  t5        t        ddd      t        ddd                        dk(  sJ |jU                  |      d   j/                  |      sJ |j/                  t        d	            du sJ |j/                  |      sJ |j/                  t        dF	            sJ |j/                  t        ddd5tA        d      z  f	            sJ |j/                        du sJ t        t        t        dGdH      t        dIdJ      t        dKdL            t        t        dGdM      t        dNdO      t        dKdL                  }t        t        t        dPdL      t        dQdL      t        dRdL            tY        dS       tY        dT       tY        dU      f      }t[        |jU                  |      D cg c]  }|j]                  d       c}      dVk(  sJ y c c}w )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                 S )Nr   )p1s   R/var/www/html/venv/lib/python3.12/site-packages/sympy/geometry/tests/test_plane.py<lambda>ztest_plane.<locals>.<lambda>   s    uRR0     F            
   r   r   r   )r   r               )   r:   r:   )r   r   r8   )direction_ratio)r'   r   r      c                  B    t        j                  t        ddd            S )Nr   )r   are_concurrentr    r.   r,   r-   ztest_plane.<locals>.<lambda>   s    u33GAq!4DE r.   c                      t        dd      S )Nr    r4   r   r*   r?   r.   r,   r-   ztest_plane.<locals>.<lambda>   s    uYiH r.   r   r   r   )r   r   r   r   r   r   )r   r   r'   c                  *     j                  ddd      S )NrB   r   )r   r   r   )perpendicular_plane)ps   r,   r-   ztest_plane.<locals>.<lambda>   s    q44Y	9U r.   )r'   r   r   r:   )r   r"   r   iii)r   r   r   r%   )seed)r   r%   r   )g?g333333?r   )   r   r   )r   r   p   rI   )r1   r   r   )r   r   )r   r   r1   )r   r1   r   )r'   r'   rJ   )r   r'   r   )r   r   rF   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_planerD   intersectionlenr   strn)xyzuvrT   p3pl3pl4pl4bpl5pl6pl7pl8pl9pl10pl11l1l2l3ltrasbZr`   irE   r+   s                                @@r,   
test_planer|      s*   Kd3MAq!Q	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"b 1111R((r2r):;;;R((,,,R((A75@@@9-99&Q-HHH%1a(
CCCC#::$;;%1a(	BBBB<<1a A!GacMB$6666<<1a 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<<++Aq12a777<<++Aq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"b)5R+<===S#.%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C #**6'!Q2BGAqRSDT+UVVV
	
3CF2z23A6==d9m>\]]]E"j1215<<SJ=WXXXIb*56q9@@2zAZ[[[E"K@A!DKKCPPPE"J?@CJJrC"Ha#346 6 6E"J?@CJJr;/1 1 1E"J?@CJJr:.0 0 0E"MBCAFMMr:.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::b>U""" 
? !13CD /BD @ !1?C /BD
EB 
wxAAAC %&&+A)B(B%
B  341A45'( ( (4s   ^0A_c            	         t        t        ddd      d      } t        dd      }| j                  |      t        t	        dd      t	        dd      t	        dd            k(  sJ t        dd      t        dd      }}d}t        ||      }|j                  ||      t        t        ddd      d	      k(  sJ t        d
dd      j                  d      t        ddd      gk(  sJ y )Nr   r   r   r   r&   r   r   r$   rA   )r   r   r   )r   r   r   )r   r   r   )r   r   )r   r   r   rN   r   rD   r]   )Ary   rw   rz   rE   s        r,   test_dimension_normalizationr      s    gaAi8AaA<<?eHQNHQNHQPQNSSSSA;1qAAaq!A  A&%1a0@)*LLLLIy 

,v
5Aq>"23 3 3r.   c                     t        d      \  } }t        ddd      t        ddd      t        ddd      }}}t        |||      j                  d      t	        dt        d      z  dz        ik(  sJ j                  d| |      | d|dik(  sJ j                  |      |k(  sJ t        t        fd       t        t        fd	       t        t        fd
       y )Nzt, u vr   r   r   r8   r   r   r2   r   c                  (     j                  d      S )NrA   parameter_valuerE   ru   s   r,   r-   z&test_parameter_value.<locals>.<lambda>
  s    q00A> r.   c            	      d     j                  t        t        dd      t        dd                  S )Nr   r   )r   r   r   r   s   r,   r-   z&test_parameter_value.<locals>.<lambda>  s(    q00eAqk5A;1OQRS r.   c                  *     j                  dd      S )Nr   r   r   r   s   r,   r-   z&test_parameter_value.<locals>.<lambda>  s    q00QB r.   )r   r   r   r   r	   r   r   rK   )rd   re   r+   rT   rf   rE   ru   s        @@r,   test_parameter_valuer     s    hGAq!q!Qq!Qq!QBBb"bAZ+4$r(
23F/GGGGZA.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.   