
    shL                        S SK Jr  S SKJr  S SKJr  S SKJr  S SK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Jr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SK!J"r"  S SK#J$r$J%r%J&r&J'r'  \" S5      u  r(r)r*\" S5      u  r+r,r-r.\" S5      u  r/r0r1r2S r3S r4S r5S r6S r7S r8S r9S r:S r;S r<S r=S r>S  r?S! r@g")#    )raises
CoordSys3D)
BaseScalar)expand)pisymbols)coshsinh)sqrt)acosatan2cossin)zeros)ImmutableDenseMatrix)simplify)express)Point)Vector)AxisOrienterBodyOrienterSpaceOrienterQuaternionOrienterx y zza b c qzq1 q2 q3 q4c                     [        S5      n U R                  R                  " U R                  R                  6 U R                  :X  d   eSU R                  -  SU R                  -  -   nUR                  " UR                  6 U:X  d   eU R
                  R                  " U R
                  R                  6 U R
                  :X  d   eU R                  U R
                  -  U R                  U R                  -  -   U R                  U R                  -  -   nUR                  " UR                  6 U:X  d   eU R                  R                  " U R                  R                  6 U R                  :X  d   eg )NA      )
r   xfuncargsyijzkorigin)r   exprvs      x/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/sympy/vector/tests/test_coordsysrect.pytest_func_argsr-      s   3A3388QSSXX!##%%%QSS51QSS5=D99dii D(((3388QSSXX!##%%%	ACC!##acc'ACCG#A66166?a88==!((--(AHH444    c                  b    [        S5      n [        S5      nX:X  d   e[        S5      nX:w  d   eg )Nr   Br   )r   A1r0   s      r,   test_coordsys3d_equivalencer2   $   s/    3A	CB7N73A6M6r.   c                     [        S5      n [        [        U R                  5      n[	        [        [
        [        S5      n[        [        [
        [        S5      n[        [        [        [        [        5      nUR                  U 5      [        [        [        5      [!        [        5      S/[!        [        5      * [        [        5      S// SQ/5      :X  d   eUR                  5       [        [        [
        5      [        [        5      -  [!        [        5      [!        [
        5      -  [        [        5      -  [!        [        5      [        [        5      -  -   [!        [        5      [!        [        5      -  [!        [
        5      [        [        5      -  [        [        5      -  -
  /[!        [        5      * [        [
        5      -  [!        [        5      * [!        [
        5      -  [!        [        5      -  [        [        5      [        [        5      -  -   [!        [        5      [        [        5      -  [!        [
        5      [!        [        5      -  [        [        5      -  -   /[!        [
        5      [!        [        5      * [        [
        5      -  [        [        5      [        [
        5      -  //5      :X  d   eUR                  5       [        [        [
        5      [        [        5      -  [!        [        5      [        [
        5      -  [!        [
        5      * /[!        [        5      [!        [
        5      -  [        [        5      -  [!        [        5      [        [        5      -  -
  [!        [        5      [!        [
        5      -  [!        [        5      -  [        [        5      [        [        5      -  -   [!        [        5      [        [
        5      -  /[!        [        5      [!        [        5      -  [!        [
        5      [        [        5      -  [        [        5      -  -   [!        [        5      * [        [        5      -  [!        [
        5      [!        [        5      -  [        [        5      -  -   [        [        5      [        [
        5      -  //5      :X  d   eUR                  5       [        [        S-  [        S-  -   [        S-  -
  [        S-  -
  S[        -  [        -  S[        -  [        -  -   S[        -  [        -  S[        -  [        -  -   /S[        -  [        -  S[        -  [        -  -   [        S-  [        S-  -
  [        S-  -   [        S-  -
  S[        -  [        -  S[        -  [        -  -   /S[        -  [        -  S[        -  [        -  -   S[        -  [        -  S[        -  [        -  -   [        S-  [        S-  -
  [        S-  -
  [        S-  -   //5      :X  d   eg )Nr   123r   )r   r         )r   r   ar(   r   bcr   r   q1q2q3q4rotation_matrixMatrixr   r   )r   axis_orienterbody_orienterspace_orienter
q_orienters        r,   test_orientersrE   ,   s   3A ACC(M Aq%0M"1aE2N#BB3J((+v
a&#a&!
a&#a&!7 0    ((*f
a&Q-#a&Q-A.QA>
a&Q-#a&Q-A.
.	0
a&Q#a&QA.QA>	QAQAs1v-	-	/QQAQA	 6! /" " " " ))+v	QAAs1vc!fW5	QAs1v	As1v	-	QAs1v	As1v	-s1vc!f}	>	QAQAs1v-	-Aws1v~	QAs1v	0"1vc!f}	.	7/ 00 0 0 0 %%'6	QQQ	Q	&"R!B$r'(9	BrAbDG			BrAbDG	RURU]RU2RU:	
2b1R47			
2b1R47		BrAbDG	RURU]RU2RU:	<3= ,> > > >r.   c                  v   [        S5      n [        SU SS5      U R                  :X  d   e[        SU SS5      U R                  :X  d   e[        SU S	S
5      U R                  :X  d   e[        SU SS5      R                  5       U R                  R                  5       :X  d   e[        U R                  [        5      (       a>  [        U R                  [        5      (       a  [        U R                  [        5      (       d   eU R                  U R                  -  U R                  U R                  -  :X  d   eU R                  U 5      U R                  U R                  U R                  U R                  U R                  U R                  0:X  d   eU R                  R                  U :X  d   eU R                  R                  U R                  5      S:X  d   eU R                  S[        U R                  5      nUR                  U 5      UR                  U R                  UR                  U R                  * [        [        5      -  U R                  [        [        5      -  -   UR                  U R                  [        [        5      -  U R                  [        [        5      -  -   0:X  d   eU R                  U5      U R                  UR                  [        [        5      -  UR                  [        [        5      -  -
  U R                  UR                  [        [        5      -  UR                  [        [        5      -  -   U R                  UR                  0:X  d   e[        UR                  U SS9U R                  [        [        5      -  U R                  [        [        5      -  -   :X  d   e[        UR                  U SS9U R                  * [        [        5      -  U R                  [        [        5      -  -   :X  d   e[        UR                  U SS9U R                  :X  d   e[!        [        UR                  UR                  -  UR                  -  U SS95      [!        U R                  U R                  * [        [        5      -  U R                  [        [        5      -  -   -  U R                  [        [        5      -  U R                  [        [        5      -  -   -  5      :X  d   e[        UR                  UR"                  -  UR                  UR$                  -  -   UR                  UR                  -  -   U 5      UR                  [        [        5      -  UR                  [        [        5      -  -
  U R"                  -  UR                  [        [        5      -  UR                  [        [        5      -  -   U R$                  -  -   UR                  U R                  -  -   :X  d   e['        [        UR                  UR"                  -  UR                  UR$                  -  -   UR                  UR                  -  -   U SS95      U R                  U R"                  -  U R                  U R$                  -  -   U R                  U R                  -  -   :X  d   e[        U R                  U R"                  -  U R                  U R$                  -  -   U R                  U R                  -  -   U5      U R                  [        [        5      -  U R                  [        [        5      -  -   UR"                  -  U R                  * [        [        5      -  U R                  [        [        5      -  -   UR$                  -  -   U R                  UR                  -  -   :X  d   e['        [        U R                  U R"                  -  U R                  U R$                  -  -   U R                  U R                  -  -   USS95      UR                  UR"                  -  UR                  UR$                  -  -   UR                  UR                  -  -   :X  d   eUR                  S[        * UR                  5      nUR                  U 5      UR                  U R                  UR                  U R                  UR                  U R                  0:X  d   eU R                  S[        U R"                  U R$                  -   U R                  -   5      nU R                  U5      nX@R                     R)                  UR                  S[        [        5      -  S-   -  S-  UR                  S[        [        [*        S-  -   5      -  S-   -  S-  -   UR                  S[        [        [*        S-  -   5      -  S-   -  S-  -   5      (       d   eX@R                     R)                  UR                  S[        [        [*        S-  -   5      -  S-   -  S-  UR                  S[        [        5      -  S-   -  S-  -   UR                  S[        [        [*        S-  -   5      -  S-   -  S-  -   5      (       d   eX@R                     R)                  UR                  S[        [        [*        S-  -   5      -  S-   -  S-  UR                  S[        [        [*        S-  -   5      -  S-   -  S-  -   UR                  S[        [        5      -  S-   -  S-  -   5      (       d   eU R-                  S[.        U R"                  -  [0        U R$                  -  -   [2        U R                  -  -   5      nUR                  U 5      UR                  U R                  [2        -
  UR                  U R                  [.        -
  UR                  U R                  [0        -
  0:X  d   eU R                  S[.        U R                  [.        U R"                  -  [0        U R$                  -  -   [2        U R                  -  -   5      nU R                  U5      U R                  UR                  [2        -   U R                  UR                  [        [.        5      -  UR                  [        [.        5      -  -
  [.        -   U R                  UR                  [        [.        5      -  UR                  [        [.        5      -  -   [0        -   0:X  d   eUR                  U 5      UR                  U R                  [.        -
  [        [.        5      -  U R                  [0        -
  [        [.        5      -  -   UR                  U R                  * [.        -   [        [.        5      -  U R                  [0        -
  [        [.        5      -  -   UR                  U R                  [2        -
  0:X  d   eU R-                  S[4        R6                  5      nU R                  U5      U R                  UR                  U R                  UR                  U R                  UR                  0:X  d   eg)zc
Tests the coordinate variables functionality with respect to
reorientation of coordinate systems.
r   r   A_xz\mathbf{{x}_{A}}r5   A_yz\mathbf{{y}_{A}}r6   A_zz\mathbf{{z}_{A}}r0   T)	variablesNCr   r7      DEFN)r   r   r!   r$   r'   __hash__
isinstance
scalar_mapsystemdifforient_new_axisqr(   r   r   r   r   r%   r&   r   equalsr   
locate_newr8   r9   r:   r   zero)r   r0   rK   rL   mappingrN   rO   rP   s           r,   test_coordinate_varsr\   L   s
   
 	3AaE#67133>>>aE#67133>>>aE#67133>>>aE#67@@BaccllnTTTacc:&&acc:&&acc:&&' ' 33qss7acc!##g<<?qssACCacc133<<<<33::??3388ACC=A	#q!##&A<<?qssACCqssd3q6kACCAJ.F!"acc#a&j133s1v:&=? ? ? ?<<?qssACCAJSV$;!"acc#a&j133s1v:&=qssACCI I I I133T*acc#a&j133s1v:.EEEE133T*qssd3q6kACCAJ.FFFF133T*acc111'!##acc'!##+qD9:!##tCF{QSSQZ/0!##c!f*qss3q6z2IJKL L L133qss7QSSW$qss133w.2CCAJSV#QSS(ACCAJ33s1v:-ss, SSW%% % % GACCGacc!##g-ACC7&*, -33qss7QSSWqss133w&' ' ' 133qss7QSSW$qss133w.2CCAJSV#QSS(SSDQK!##c!f*$acc)*,-CCG44 4 4 GACCGacc!##g-ACC7&*, -33qss7QSSWqss133w&' ' ' 	
#r133'A<<?CCacc133QSS)* * *	#q!##)acc/2All1oG33<qssAc!fHqL1!3CCCBqDM!1A!56q8 9CCCBqDM!1A!56q8 9 : : : : 33<qssBs1r!t8}$4q$89!;CC3q6A.q0 1CCCBqDM!1A!56q8 9 : : : : 33<qssBs1r!t8}$4q$89!;CCCBqDM!1A!56q8 9CC3q6A.q0 1 2 2 2 2 	
S!ACC%!ACC%-!ACC%/0A<<?qssACC!GQSS!##'133aHHHH	#q!##ququ}qu'<=A<<?qssACC!G ssACCAJSV$;a$? ssACCAJSV$;a$?A A A A <<?qssQSS1Wc!f$4aQ7G$G ssaccTAXs1v$5q#a&8H$H ssACC!G- - - - 	
S&++&A<<?qssACCacc133<<<<r.   c                     [        S5      n U R                  S[        U R                  5      nUR                  S[        UR
                  5      nUR                  S[        UR                  5      nU R                  S[        U R                  5      nU R                  S[        [        [        S5      nU R                  S[        [        [        [        5      nU R                  S	[        [        [        S5      nU R                  U5      [        [        [        5      * [        [        5      -  [        [        5      -  [        [        5      [        [        5      -  -   [        [        5      * [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  [        [        5      [        [        5      -  -   /[        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -   [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -
  /[        [        5      * [        [        5      -  [        [        5      [        [        5      [        [        5      -  //5      :X  d   eUR                  U5      [        [        [        5      [        [        5      -  [        [        5      -  [        [        5      [        [        5      * [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -   -  -
  [        [        5      * [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -
  [        [        5      [        [        5      -  [        [        5      -  [        [        5      [        [        5      * [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -   -  -   /[        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -   [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -
  /[        [        5      [        [        5      -  [        [        5      -  [        [        5      [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -   -  -
  [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -
  [        [        5      [        [        5      -  [        [        5      -  [        [        5      [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -   -  -   //5      -
  nUR!                  5       [#        S
S
5      :X  d   eUR                  U 5      [        [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      * /[        [        5      [        [        5      -  [        [        5      -  [        [        5      [        [        5      -  -
  [        [        5      [        [        5      -  [        [        5      -  [        [        5      [        [        5      -  -   [        [        5      [        [        5      -  /[        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -   [        [        5      * [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -   [        [        5      [        [        5      -  //5      :X  d   eUR                  U 5      [        [        S-  [        S-  -   [        S-  -
  [        S-  -
  S[        -  [        -  S[        -  [        -  -   S[        -  [        -  S[        -  [        -  -   /S[        -  [        -  S[        -  [        -  -   [        S-  [        S-  -
  [        S-  -   [        S-  -
  S[        -  [        -  S[        -  [        -  -   /S[        -  [        -  S[        -  [        -  -   S[        -  [        -  S[        -  [        -  -   [        S-  [        S-  -
  [        S-  -
  [        S-  -   //5      :X  d   eUR                  U 5      [        [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  [        [        5      [        [        5      -  -   [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -
  /[        [        5      * [        [        5      -  [        [        5      * [        [        5      -  [        [        5      -  [        [        5      [        [        5      -  -   [        [        5      [        [        5      -  [        [        5      [        [        5      -  [        [        5      -  -   /[        [        5      [        [        5      * [        [        5      -  [        [        5      [        [        5      -  //5      :X  d   eg )NrK   r   r0   rL   rN   rO   r4   rP   Gr   r6   r7   )r   rV   r;   r(   r<   r%   r=   r&   r>   orient_new_spaceorient_new_quaternionorient_new_bodyr?   r@   r   r   r   r   )	rK   r   r0   rL   rN   rO   rP   r^   test_mats	            r,   test_rotation_matrixrc      s    3A	#r133'A	#r133'A	#r133'A	#r133'A	3BE2A	RR4A	#r2r51AQ6r7SW	s2w	&R3r7):	:c"gIB=R3r7"SW,s2wR/@@	B	R3r7	SWs2w.R8	8	R3r7	CGc"g-B#b'0A	R1 	"gIB'R#b'CG2CD+F $G G G G   #f
b'CG
c"g
%BSW9s2w3FB#b'CG#4$ )% %(+Bi#b'&9CGG="g= '"2wR03r7:SWW9s2wR3r7!2SW!<<>>  >
? b'CG
c"gB/#b'9
93r7
b'<r7SW$s2wR'83r7'BB
D
b'CG
c"g
%B3r7SW3D36r7SW3D36r74;4; )< <=@WB>b'CG+c"g5>67:2w
b'8G8!"gR3r7):),R3r7):SW)D*E F8F
G	H'I IH ??a+++Q6
b'#b'/3r73r7?SWH	5	RRR	 3r73r7?	2	RRR	 3r73r7?	2CGCGO	E
b'#b'/CGCGOCG3
3
b'6b'6GCGOCG36458WSW_
F	G$H H H H Q6
AAAA%	"R!B$r'2b58ad2g-,/13BrAbDG1CEBEMBE!BE)1R47QrT"W+<0>,-bDGad2g,=,.rE"HqtBw,> "AAA 5A =,?	+@ $A A A A Q6BB#b'#b'/#b'1CGCGOCBB#b'#b'/#b'11,3 WHSWs2whs2w.s2w6RRHGCGOc"gc"goc"g5557 B#b'#b')3r73r7?8<	+= $> > > >r.   c            	      Z   [        S5      n U R                  S[        U R                  5      nUR                  S[        UR
                  5      nUR                  S[        UR                  5      n[        U R
                  -  [        U R                  -  -   [        U R                  -  -   nUR                  U5      [        [        [        [        5      -  [        [        [        5      -  -   /[        * [        [        5      -  [        [        [        5      -  -   /[        //5      :X  d   eU R
                  R                  UR
                  5      [        [        5      :X  d   eU R
                  R                  UR                  5      [        [        5      * :X  d   eU R
                  R                  UR                  5      S:X  d   eU R                  R                  UR
                  5      [        [        5      :X  d   eU R                  R                  UR                  5      [        [        5      :X  d   eU R                  R                  UR                  5      S:X  d   eU R                  R                  UR
                  5      S:X  d   eU R                  R                  UR                  5      S:X  d   eU R                  R                  UR                  5      S:X  d   eU R
                  R                  UR
                  UR                  -   5      [        [        5      * [        [        5      -   s=:X  a7  UR
                  UR                  -   R                  U R
                  5      :X  d   e   eUR
                  R                  UR
                  5      [        [        5      :X  d   eUR
                  R                  UR                  5      S:X  d   eUR
                  R                  UR                  5      [        [        5      :X  d   eUR                  R                  UR
                  5      [        [        5      [        [        5      -  :X  d   eUR                  R                  UR                  5      [        [        5      :X  d   eUR                  R                  UR                  5      [        [        5      * [        [        5      -  :X  d   eUR                  R                  UR
                  5      [        [        5      * [        [        5      -  :X  d   eUR                  R                  UR                  5      [        [        5      :X  d   eUR                  R                  UR                  5      [        [        5      [        [        5      -  :X  d   eU R
                  R!                  UR
                  5      [        [        5      UR                  -  :X  d   eU R
                  R!                  UR                  5      [        [        5      UR                  -  :X  d   eU R
                  R!                  UR                  5      [        [        5      * UR
                  -  [        [        5      UR                  -  -
  :X  d   eU R                  R!                  UR
                  5      [        [        5      * UR                  -  :X  d   eU R                  R!                  UR                  5      [        [        5      UR                  -  :X  d   eU R                  R!                  UR                  5      [        [        5      UR
                  -  [        [        5      UR                  -  -
  :X  d   eU R                  R!                  UR
                  5      UR                  :X  d   eU R                  R!                  UR                  5      UR
                  * :X  d   eU R                  R!                  UR                  5      ["        R$                  :X  d   eU R
                  R!                  UR
                  5      [        [        5      UR                  -  :X  d   eU R
                  R!                  UR                  5      [        [        5      UR                  -  :X  d   eU R
                  R!                  UR
                  UR                  -   5      [        [        5      UR                  -  [        [        5      UR                  -  -   :X  d   eUR
                  UR                  -   R!                  U R
                  5      [        [        5      * [        [        5      -
  U R                  -  :X  d   eUR
                  R!                  UR
                  5      [        [        5      UR                  -  :X  d   eUR
                  R!                  UR                  5      [        [        5      * UR
                  -  [        [        5      UR                  -  -   :X  d   eUR
                  R!                  UR                  5      [        [        5      * UR                  -  :X  d   eUR
                  R!                  UR
                  5      [        [        5      * [        [        5      -  UR                  -  [        [        5      * [        [        5      -  UR                  -  -   :X  d   eUR                  R!                  UR
                  5      [        [        5      UR                  -  [        [        5      * UR                  -  -   :X  d   e['        UR                  R!                  UR
                  5      U5      R)                  5       [        [        5      UR                  -  :X  d   eg)zT
Tests the effects of orientation of coordinate systems on
basic vector operations.
rK   r   r0   rL   r   r5   N)r   rV   r;   r(   r<   r%   r=   r&   r8   r9   r:   	to_matrixr@   r   r   dotcrossr   rZ   r   trigsimp)rK   r   r0   rL   v1s        r,   test_vector_with_orientationrj      s   
 	3A	#r133'A	#r133'A	#r133'A 
133133133	B<<?f#b'	Ac"gI(=&>()r#b'zAc"gI'=&><=&>&@ A A A A
 3377133<3r7"""3377133<CG8###3377133<13377133<3r7"""3377133<3r7"""3377133<13377133<13377133<13377133<133771339#b'CG!3  CC!##I??133          3377133<3r7"""3377133<13377133<3r7"""3377133<3r73r7?***3377133<3r7"""3377133<CG8CG++++3377133<CG8CG++++3377133<3r7"""3377133<3r73r7?*** 3399QSS>SWQSS[(((3399QSS>SWQSS[(((3399QSS>c"gXacc\CGACCK77773399QSS>c"gXacc\)))3399QSS>SWQSS[(((3399QSS>SWQSS[3r7133;66663399QSS>QSS   3399QSS>accT!!!3399QSS>V[[(((3399QSS>SWQSS[(((3399QSS>SWQSS[(((3399QSS133Y3r7133;R#<<<<CC!##IQSS!s2whR&8!##%====3399QSS>SWQSS[(((3399QSS>c"gXacc\CGACCK77773399QSS>c"gXacc\)))3399QSS>s2whs2w.3WHSWacc!" " " "3399QSS>c"gqss]s2wh^;;;;13399QSS>1%..0CGACCK???r.   c                     [        S5      n [        [        U R                  5      n[	        [
        [        [        S5      n[        [
        [        [        [        5      n[        [
        [        [        S5      nU R                  SU45      nU R                  SU45      nU R                  SU45      nU R                  SU45      nXPR                  S[        U R                  5      :X  d   eX`R                  S[
        [        [        S5      :X  d   eXpR                  S[
        [        [        [        5      :X  d   eXR                  S[
        [        [        S5      :X  d   eg )NrK   r4   rN   rO   rP   r^   )r   r   r>   r&   r   r;   r<   r=   r   r   
orient_newrV   r_   r`   ra   )	rK   	orienter1	orienter2	orienter3	orienter4rN   rO   rP   r^   s	            r,   test_orient_new_methodsrq     s   3AR%Ib"b%0I"2r2r2IRR/I	S9-(A	S9-(A	S9-(A	S9-(A!!#r133////""3BE::::''RR<<<<!!#r2r59999r.   c                     [        S5      n [        U R                  [        5      (       d   e[        U R
                  -  [        U R                  -  -   [        U R                  -  -   nU R                  SU5      nUR                  R                  U 5      UR                  U 5      s=:X  a1  UR                  R                  U R                  5      s=:X  a  U:X  d   e   eU R                  R                  U5      U R                  U5      s=:X  a2  U R                  R                  UR                  5      s=:X  a  U* :X  d   e   eU R                  R                  U5      [        * [        * [        * 4:X  d   eU R                  R                  SU* 5      nUR                  U 5      [        * [        * [        * 4:X  d   eUR                  UR                  5      UR                  U5      s=:X  a
  SU-  :X  d   e   eUR                  SSU-  5      nUR                  UR                  5      [        R                  :X  d   eUR                  U5      S:X  d   eUR                  SU R
                  5      nUR                  U5      SU-  U R
                  -
  :X  d   eUR                  U5      S[        -  S	-   S[        -  S[        -  4:X  d   eg
)z9
Tests Point class, and locate_new method in CoordSys3D.
r   rL   pr7   p1r6   )r   r   r   p2r5   N)r   rR   r)   r   r8   r%   r9   r&   r:   r(   rY   position_wrtexpress_coordinatesr   rZ   )r   r+   rL   rs   rt   ru   s         r,   test_locatenew_pointrx     sm    	3Aahh&&&&	!##!##!##A	S!A88  #>>!088  *0./0 0 0 0 0 88  #>>!188  *1/0b1 1 1 1 1 88''*rA2rl:::	C!$A  #QB|333>>!((#q~~a'8 6    	
dAaC	 B??188$333!!!$	111	
dACC	 B??2!A#)+++!!!$A2a4A(>>>>r.   c            
         [        S5      n U R                  SSS9nUR                  U :X  d   eUR                  5       UR                  [        UR                  5      -  [        UR                  5      -  UR                  [        UR                  5      -  [        UR                  5      -  UR                  [        UR                  5      -  4:X  d   eUR                  5       [        U R                  S-  U R                  S-  -   U R                  S-  -   5      [        U R                  [        U R                  S-  U R                  S-  -   U R                  S-  -   5      -  5      [        U R                  U R                  5      4:X  d   eg )Nr8   r:   	sphericaltransformationr6   )r   
create_new_parenttransformation_to_parentrr   thetar   phitransformation_from_parentr   r!   r$   r'   r   r   )r8   r:   s     r,   test_create_newr   -  s;   3A	S5A99>>%%'CCAGGSZ'S\)9#aee*)Dacc#agg,FVWX X X'')a!##q&1336)*DT!##q&1336/ACCQRF:R5S1S,TV[\]\_\_abadadVefg g gr.   c                  B   [        S5      n SU R                  -  SU R                  -  -   [        U R                  -  -   nUR                  5       UR                  5       :X  d   eUR                  [        S0S9UR                  [        S5      R                  5       :X  d   eg )Nr   r   r    r5   )subs)r   r%   r&   r8   r(   nevalfr   )r   r+   s     r,   
test_evalfr   7  s{    3A	!##!##!##A335AGGI7717!&&A,"4"4"6666r.   c                     [        SS5      n U R                  5       SU R                  [        U R                  5      U R                  -  4:X  d   e[        S5      n U R                  5       S:X  d   e[        SS5      n U R                  5       S:X  d   e[        SS5      n U R                  5       SU R                  S4:X  d   eg )Nr8   rz   r5   r5   r5   r5   	cartesiancylindrical)r   lame_coefficientsr   r   r   r8   s    r,   test_lame_coefficientsr   >  s    3$A QS\!##-=$>>>>3A I---3$A I---3&A QQK///r.   c            
      ^  ^^^^ [        S5      u  mmm[        SS/ SQS9mTR                  5       u  pnU TR                  :X  d   eUTR                  :X  d   eUTR
                  :X  d   e[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        TR                  5       U [        U5      -  [        U5      -  U [        U5      -  [        U5      -  U [        U5      -  4:X  d   eTR                  5       S	X [        U5      -  4:X  d   eTR                  5       " TTT5      [        TS
-  TS
-  -   TS
-  -   5      [        T[        TS
-  TS
-  -   TS
-  -   5      -  5      [        TT5      4:X  d   e[        SS/ SQS9mTR                  5       u  pmTR                  5       U [        U5      -  U [        U5      -  T4:X  d   eTR                  5       S	TR                  S	4:X  d   eTR                  5       " TTT5      [        TS
-  TS
-  -   5      [        TT5      T4:X  d   e[        SS5      mTR                  5       TR                   TR"                  TR$                  4:X  d   eTR                  5       S:X  d   eTR                  5       " TTT5      TTT4:X  d   e[        S5      u  mmm[        STTT4TTT445      mTR'                  5         TR                  5       TR(                  TR*                  TR,                  4:X  d   eTR                  5       S:X  d   eTR                  5       " TTT5      TTT4:X  d   e[        S5      u  pm[        SXT4U [        U5      -  U [        U5      -  T4// SQS9mTR                  5       u  pmTR                  5       U [        U5      -  U [        U5      -  T4:X  d   eTR                  5       [        [        U5      S
-  [        U5      S
-  -   5      [        U S
-  [        U5      S
-  -  U S
-  [        U5      S
-  -  -   5      S	4:X  d   e[        SS 5      mTR                  5       TR(                  TR*                  TR,                  4:X  d   eTR                  5       S:X  d   eTR'                  5         TR                  5       " TTT5      TTT4:X  d   e[        SS / SQS9mTR                  5       u  pnTR                  5       U [        U5      -  [        U5      -  U [        U5      -  [        U5      -  U [        U5      -  4:X  d   eTR                  5       [        [        U5      S
-  [        U5      S
-  -  [        U5      S
-  [        U5      S
-  -  -   [        U5      S
-  -   5      [        U S
-  [        U5      S
-  -  [        U5      S
-  -  U S
-  [        U5      S
-  -  -   U S
-  [        U5      S
-  -  [        U5      S
-  -  -   5      [        U S
-  [        U5      S
-  -  [        U5      S
-  -  U S
-  [        U5      S
-  -  [        U5      S
-  -  -   5      4:X  d   e[        SS / SQS9mTR                  5       u  pmTR                  5       U [        U5      -  U [        U5      -  T4:X  d   eTR                  5       [        [        U5      S
-  [        U5      S
-  -   5      [        U S
-  [        U5      S
-  -  U S
-  [        U5      S
-  -  -   5      S	4:X  d   e[        [.        UUU4S j5        g )Nr   r8   rz   r   r   r   )r|   variable_namesc                     > T R                   $ N)r!   r   s   r,   <lambda>/test_transformation_equations.<locals>.<lambda>U  	    133r.   c                     > T R                   $ r   )r$   r   s   r,   r   r   V  r   r.   c                     > T R                   $ r   )r'   r   s   r,   r   r   W  r   r.   r5   r6   r   r   r   r'   r   r   z	r theta z)r   c                 
    XU4$ r    r!   r$   r'   s      r,   r   r     s    q	r.   c                     U [        U5      -  [        U5      -  U [        U5      -  [        U5      -  U [        U5      -  4$ r   )r   r   r   s      r,   r   r     s=    qU|CH/DaE
lSVWZS[F[]^_bch_i]i.jr.   c                 <    U [        U5      -  U [        U5      -  U4$ r   )r   r   r   s      r,   r   r     s    	
3u:qU|Q'r.   c                     > [        ST T [        T5      -  [        T5      -  TT [        T5      -  [        T5      -  TT [        T5      -  0S9$ Nr8   r{   r   r   r   r   s   r,   r   r     sF    j	1SV8CF?AaAhs1voq1SV8>= >r.   )r
   r   base_scalarsr   r   r   r   AttributeErrorr   r   r   r   #transformation_from_parent_functionr   r   r   r!   r$   r'   _calculate_inv_trans_equationsx1x2x3	TypeError)r   r   r   r8   r!   r$   r'   s      @@@@r,   test_transformation_equationsr   I  s+   gGAq!3{"7	9ANN$MAc8O8AGG!%%<<
>;'
>;'
>;'%%'	#e*SX	#e*SX	#e*,   
  QSZ<$88880021a;Q!Va1f_qAv%&a41q!tad*++,a@   
 	3}"5	7A.."KAa%%'	#e*	#e*	,   
  QQK///0021a;QTAqD[@Q!!QK@, , , , 	3$A%%'ACCacc?::: I---0021a;1ayHHH
 gGAq!3!QQ1I./A$$&%%'ADD!$$+==== I---0021a;1ayHHH+&KAa 	3!A3u:qU|Q(GH"5	7A.."KAa%%'	#e*aE
lA,     SZ]SZ]*+QT#e*a-!Q$s5z1}"445	%    	312A%%'ADD!$$+==== I---$$&0021a;1ayHHH 	3j"7	9ANN$MAc%%'	#e*SXqSz#e*4aE
l,     SXq[UQ&UQs3x{)BBSZQR]RSQT#c(A+c%j!m+ad3u:q=.@@1a4CRSCSTWX]T^`aTaCaabQT#c(A+c%j!m+ad3u:q=.@S1.LLM%    	3 (*	A .."KAa%%'Ac%jL!CJ,+JJJJ SZ]SZ]*+QT#e*a-!Q$s5z1}"445	%    9 > ?r.   c            
        ^^^ [        S5      u  mmm[        S5      u  p[        STTT4T[        T5      -  [        T5      -  T[        T5      -  [        T5      -  T[        T5      -  44S9nUR	                  UR
                  5      SL d   e[        STTT4T[        T5      -  T[        T5      -  T44S9nUR	                  UR
                  5      SL d   e[        SXT4[        U 5      [        U5      -  [        U 5      [        U5      -  T44S9nUR	                  UR
                  5      SL d   e[        [        UUU4S j5        [        [        UUU4S j5        g )Nr   zu, vr8   r{   Tc                  (   > [        ST TT4T T T44S9$ r   r   r   s   r,   r   *test_check_orthogonality.<locals>.<lambda>  s    z#1ay1aQR)>TUr.   c            
         > [        ST TT4T [        TS-  5      -  [        T5      -  T [        T5      -  [        T5      -  T [        T5      -  44S9$ )Nr8   r6   r{   r   r   s   r,   r   r     sR    z#	
Aq	Ac!A#hJs1v%qQxA#a&A?C  Dr.   )
r
   r   r   r   _check_orthogonality_transformationr   r   r   
ValueError)ur+   r8   r!   r$   r'   s      @@@r,   test_check_orthogonalityr     sK   gGAq!
&/CA3Aq	Ac!fHSVOQs1vXcRSf_VWX[\]X^V^3_'`aA!!!"3"34<<<3Aq	AAJCF
A3N'OPA!!!"3"34<<<3q	DGc!f4Dd1gPSTUPVFVXY3Z'[\A!!!"3"34<<<
:UV
: D Er.   c                     [        S5      n SSKJn  U" S5      nU R                  U R                  U R                  5       5      U R                  U R                  U R                  4:X  d   eU R                  U R                  5       U R                  5       5      U R                  U R                  U R                  4:X  d   eU R                  SSU R                  * 5      nUR                  UR                  UR                  5       5      UR                  UR                  UR                  4:X  d   eUR                  UR                  5       UR                  5       5      UR                  UR                  UR                  4:X  d   eU R                  SX R                  * 5      nUR                  UR                  UR                  5       5      [        U5      * UR                  -  [        U5      UR                  -  -   [        U5      UR                  -  [        U5      UR                  -  -   UR                  4:X  d   eUR                  UR                  5       UR                  5       5      [        U5      UR                  -  [        U5      UR                  -  -   [        U5      * UR                  -  [        U5      UR                  -  -   UR                  4:X  d   eg )Nr8   r   r	   q0r9   r:   )r   sympy.core.symbolr
   _rotation_trans_equations_parent_rotation_matrixr   r!   r$   r'   _inverse_rotation_matrixrV   r(   r   r   )r8   r
   r   r9   r:   s        r,   test_rotation_trans_equationsr     sT   3A)	B&&q'@'@!..BRSXYX[X[]^]`]`bcbebeWffff&&q'A'A'CQ^^EUV[\[^[^`a`c`cefehehZiiii	#q133$'A&&q'@'@!..BRSXYX[X[]^]`]`bcbebeWffff&&q'A'A'CQ^^EUV[\[^[^`a`c`cefehehZiiii	#rCC4(A&&q'@'@!..BRSWHqssNSWqss]*CGaccMCGaccM,I133OP P P&&q'A'A'CQ^^EUVGaccMCGaccM)CG8acc>CGaccM+I133OP P Pr.   N)Asympy.testing.pytestr   sympy.vector.coordsysrectr   sympy.vector.scalarr   sympy.core.functionr   sympy.core.numbersr   r   r
   %sympy.functions.elementary.hyperbolicr   r   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   r   r   sympy.matrices.denser   sympy.matrices.immutabler   r@   sympy.simplify.simplifyr   sympy.vector.functionsr   sympy.vector.pointr   sympy.vector.vectorr   sympy.vector.orientersr   r   r   r   r!   r$   r'   r8   r9   r:   rW   r;   r<   r=   r>   r-   r2   rE   r\   rc   rj   rq   rx   r   r   r   r   r   r   r   r.   r,   <module>r      s    ' 0 * & ! % > 9 L L & C , * $ &G G '
1aY
1a'BB5>@@=F/>d>@B: ?6g70h?VEPr.   