Ë
    7^(hós  ã                   ó¨  — d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dl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 dlmZ d dlZd dl Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d „ Z4d!„ Z5d"„ Z6d#„ Z7d$„ Z8d%„ Z9d&„ Z:d'„ Z;d(„ Z<d)„ Z=d*„ Z>d+„ Z?d,„ Z@d-„ ZAd.„ ZBd/„ ZCd0„ ZDd1„ ZEd2„ ZFd3„ ZGd4„ ZHy)5é    )Úpi)Úsymbols)Útrigsimp)ÚcosÚsin)ÚeyeÚzeros)ÚImmutableDenseMatrix)Úsimplify)ÚReferenceFrameÚVectorÚCoordinateSymÚdynamicsymbolsÚtime_derivativeÚexpressÚdot©Ú_check_frame)ÚVectorTypeError)ÚraisesNc                  óf  ‡‡‡‡— t        d«      Št        d«      } t        d«      Št        d«      }t        d«      Št        d«      Š| j                  ‰‰j                  d«       ‰j                  | | j                  d«       |j                  ‰‰j                  d«       |j                  ‰d«      |‰| ‰gk(  sJ ‚‰j                  ||j                  d«       ‰j                  ‰d«      ‰| ‰gk(  sJ ‚‰j                  ‰d«      ‰|‰gk(  sJ ‚t	        t
        ˆˆfd	„«       t	        t
        ˆˆfd
„«       y )NÚAÚBÚCÚDÚEÚFg      ð?r   c                  ó(   •— ‰ j                  ‰d«      S )Né   ©Ú
_dict_list)r   r   s   €€úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/physics/vector/tests/test_frame.pyú<lambda>z test_dict_list.<locals>.<lambda>'   ó   ø€ ˜qŸ|™|¨A¨qÓ1€ ó    c                  ó(   •— ‰j                  ‰ d«      S ©Nr   r    )r   r   s   €€r"   r#   z test_dict_list.<locals>.<lambda>)   r$   r%   )r   Úorient_axisÚxr!   r   Ú
ValueError)r   r   r   r   r   r   s     @@@@r"   Útest_dict_listr+      s  û€ ä�sÓ€AÜ�sÓ€AÜ�sÓ€AÜ�sÓ€AÜ�sÓ€AÜ�sÓ€Aà‡M�M�!�Q—S‘S˜#ÔØ‡M�M�!�Q—S‘S˜#ÔØ‡M�M�!�Q—S‘S˜#Ôà�<‰<˜˜1Ó ! Q¨¨1 Ò-Ð-Ð-à‡M�M�!�Q—S‘S˜#Ôà�<‰<˜˜1Ó ! Q¨ Ò*Ð*Ð*Ø�<‰<˜˜1Ó ! Q¨ Ò*Ð*Ð*ô Œ:Ô1Ô2ä
Œ:Ô1Õ2r%   c                  ó”  ‡— t        d«      Št        d‰d«      ‰d   k(  sJ ‚t        d‰d«      ‰d   k(  sJ ‚t        d‰d«      ‰d   k(  sJ ‚t        t        ˆfd„«       t	        d«      } t	        dd«      }t        ‰d   t        «      r&t        ‰d   t        «      rt        ‰d   t        «      sJ ‚‰j                  ‰«      ‰d   ‰d   ‰d   ‰d   ‰d   ‰d   ik(  sJ ‚‰d   j                  ‰k(  sJ ‚‰j                  dd	| ‰j                  g«      }|j                  ‰«      |d   ‰d   |d   ‰d    t        | «      z  ‰d   t        | «      z  z   |d   ‰d   t        | «      z  ‰d   t        | «      z  z   ik(  sJ ‚‰j                  |«      ‰d   |d   t        | «      z  |d   t        | «      z  z
  ‰d   |d   t        | «      z  |d   t        | «      z  z   ‰d   |d   ik(  sJ ‚t        |d   ‰«      ‰d    t        | «      z  |z  ‰d   t        | «      z  |z  z   k(  sJ ‚t        |d   ‰«      ‰d    t        | «      z  |z  ‰d   t        | «      z  |z  z
  k(  sJ ‚t        |d   ‰«      dk(  sJ ‚t        |d   ‰d
¬«      ‰d   t        | «      z  ‰d   t        | «      z  z   k(  sJ ‚t        |d   ‰d
¬«      ‰d    t        | «      z  ‰d   t        | «      z  z   k(  sJ ‚t        |d   ‰d
¬«      ‰d   k(  sJ ‚t        ‰d   ‰j                  z  ‰d   ‰j                  z  z   ‰d   ‰j                  z  z   |«      ‰d   |z  ‰j                  z  ‰d   |z  ‰j                  z  z
  k(  sJ ‚t        |d   |j                  z  |d   |j                  z  z   |d   |j                  z  z   ‰«      |d    |z  |j                  z  |d   |z  |j                  z  z   k(  sJ ‚t        |d   |d   z  |d   z  ‰d
¬«      ‰d   ‰d    t        | «      z  ‰d   t        | «      z  z   z  ‰d   t        | «      z  ‰d   t        | «      z  z   z  k(  sJ ‚t        |d   |d   z  |d   z  ‰«      ‰d   ‰d   dz   t        d| z  «      z  d‰d   z  ‰d   z  t        d| z  «      z  z
  ‰d   dz  t        d| z  «      z  z   z  |z  z
  j!                  «       dk(  sJ ‚t        |d   |j                  z  |d   |j                  z  z   |d   |j                  z  z   ‰«      |d   t        | «      z  |d   t        | «      z  z
  ‰j                  z  |d   t        | «      z  |d   t        | «      z  z   ‰j                  z  z   |d   ‰j                  z  z   k(  sJ ‚t        |d   |j                  z  |d   |j                  z  z   |d   |j                  z  z   ‰d
¬«      j#                  «       ‰d   ‰j                  z  ‰d   ‰j                  z  z   ‰d   ‰j                  z  z   k(  sJ ‚t        ‰d   ‰j                  z  ‰d   ‰j                  z  z   ‰d   ‰j                  z  z   |«      ‰d   t        | «      z  ‰d   t        | «      z  z   |j                  z  ‰d    t        | «      z  ‰d   t        | «      z  z   |j                  z  z   ‰d   |j                  z  z   k(  sJ ‚t        ‰d   ‰j                  z  ‰d   ‰j                  z  z   ‰d   ‰j                  z  z   |d
¬«      j#                  «       |d   |j                  z  |d   |j                  z  z   |d   |j                  z  z   k(  sJ ‚|j                  dd	|  |j                  g«      }|j                  ‰«      j%                  «       D ��ci c]  \  }}||j#                  «       “Œ c}}|d   ‰d   |d   ‰d   |d   ‰d   ik(  sJ ‚‰j                  dd	| ‰j                  ‰j                  z   ‰j                  z   g«      }‰j                  |«      }t!        |‰d      «      d|d   z  t        | «      z  dz  |d   dz  z   d|d   z  t        | t&        dz  z   «      z  dz  z
  |d   dz  z   d|d   z  t        | t&        dz  z   «      z  dz  z
  |d   dz  z   k(  sJ ‚t!        |‰d      «      d|d   z  t        | t&        dz  z   «      z  dz  |d   dz  z   d|d   z  t        | «      z  dz  z   |d   dz  z   d|d   z  t        | t&        dz  z   «      z  dz  z
  |d   dz  z   k(  sJ ‚t!        |‰d      «      d|d   z  t        | t&        dz  z   «      z  dz  |d   dz  z   d|d   z  t        | t&        dz  z   «      z  dz  z
  |d   dz  z   d|d   z  t        | «      z  dz  z   |d   dz  z   k(  sJ ‚yc c}}w )z,Tests the coordinate variables functionalityr   ÚAxr   é   é   c                  ó   •— t        d‰ d«      S )Nr-   é   )r   )r   s   €r"   r#   z&test_coordinate_vars.<locals>.<lambda>2   s   ø€ œ}¨T°1°aÓ8€ r%   Úqr   ÚAxisT©Ú	variablesÚNr   r1   é   éþÿÿÿN)r   r   r   r*   r   Ú
isinstanceÚvariable_mapÚframeÚ	orientnewÚzr   r   r   r   r)   Úyr   r   Úitemsr   )	r2   Úqdr   r6   ÚkÚvr   Úmappingr   s	           @r"   Útest_coordinate_varsrD   ,   s¤
  ø€ ä�sÓ€AÜ˜˜q !Ó$¨¨!©Ò,Ð,Ð,Ü˜˜q !Ó$¨¨!©Ò,Ð,Ð,Ü˜˜q !Ó$¨¨!©Ò,Ð,Ð,Ü
Œ:Ó8Ô9Ü�sÓ€AÜ	˜˜QÓ	€BÜ�a˜‘dœMÔ*Ü�a˜‘dœMÔ*Ü�a˜‘dœMÔ*ð+ð +ð �>‰>˜!Ó  1¡ a¨¡d¨A¨a©D°°1±°q¸±t¸A¸a¹DÐ AÒAÐAÐAØˆQ‰4�:‰:˜Š?Ðˆ?Ø	�‰�C˜ ! Q§S¡S Ó*€AØ�>‰>˜!Ó  1¡ q¨¡t¨Q¨q©T°A°a±D°5¼¸Q»±<À!ÀAÁ$ÄsÈ1ÃvÁ+Ñ3MØ!" 1¡ q¨¡t¬C°«F¡{°Q°q±T¼#¸a»&±[Ñ'@ð!Bò Bð Bð Bà�>‰>˜!Ó  1¡ q¨¡t¬C°«F¡{°Q°q±T¼#¸a»&±[Ñ'@Ø!" 1¡ q¨¡t¬C°«F¡{°Q°q±T¼#¸a»&±[Ñ'@À!ÀAÁ$ÈÈ!Éð!Nò Nð Nð Nä˜1˜Q™4 Ó#¨¨!© u¬S°«V¡|°B¡¸¸1¹¼cÀ!»f¹ÀR¹Ñ'GÒGÐGÐGÜ˜1˜Q™4 Ó#¨¨!© u¬S°«V¡|°B¡¸¸1¹¼cÀ!»f¹ÀR¹Ñ'GÒGÐGÐGÜ˜1˜Q™4 Ó# qÒ(Ð(Ð(Ü�1�Q‘4˜ dÔ+¨q°©t´C¸³F©{¸Q¸q¹TÄ#ÀaÃ&¹[Ñ/HÒHÐHÐHÜ�1�Q‘4˜ dÔ+°°!±¨u´S¸³V©|¸aÀ¹dÄ3ÀqÃ6¹kÑ/IÒIÐIÐIÜ�1�Q‘4˜ dÔ+¨q°©tÒ3Ð3Ð3Ü˜1˜Q™4 §¡™8 a¨¡d¨1¯3©3¡hÑ.°°1±°a·c±c±Ñ9¸1Ó=ÀÀ1ÁÀbÁÈÏÉÁÈqÐQRÉtÐTVÉwÐWX×WZÑWZÉ{ÑAZÒZÐZÐZÜ˜1˜Q™4 §¡™8 a¨¡d¨1¯3©3¡hÑ.°°1±°a·c±c±Ñ9¸1Ó=À1ÀQÁ4ÀÈÁÈ1Ï3É3ÁÐQRÐSTÑQUÐVXÑQXÐYZ×Y\ÑY\ÑQ\ÑA\Ò\Ð\Ð\Ü�1�Q‘4˜˜!™‘9˜Q˜q™T‘> 1°Ô5ØˆQ‰4�!�A‘$�”s˜1“v‘  !¡¤S¨£V¡Ñ+Ñ,¨a°©d´3°q³6©k¸A¸a¹DÄÀQÃ¹KÑ.GÑHòIð Ið Iä˜A˜a™D  1¡™I a¨¡d™N¨AÓ.Øˆq‰T�A�a‘D˜!‘G�8œC  !¡›HÑ$Øˆq�‰t‰V�A�a‘D‰[œ˜Q˜q™S›Ñ!ñ"àˆq‰T�1‰W”S˜˜1™“XÑññ à!ñ"ñ#÷ %-¡H£J°!ò4ð 4ð 4ô �1�Q‘4˜Ÿ™‘8˜a ™d 1§3¡3™hÑ&¨¨1©¨a¯c©c©Ñ1°1Ó5Øˆa‰D”�Q“‰K˜!˜A™$œs 1›v™+Ñ% q§s¡sÑ*¨a°©d´3°q³6©kØˆQ‰4”�A“‰;ñ/ØŸ™ñ.ñ Ø ™d 1§3¡3™hñ'ò'ð 'ð 'ô �1�Q‘4˜Ÿ™‘8˜a ™d 1§3¡3™hÑ&¨¨1©¨a¯c©c©Ñ1°1Ø!ô#ß#+¡8£:°°1±°a·c±c±¸A¸a¹DÀÇÁ¹HÑ1DÀqÈÁtÈAÏCÉCÁxÑ1OòPð Pð Pä�1�Q‘4˜Ÿ™‘8˜a ™d 1§3¡3™hÑ&¨¨1©¨a¯c©c©Ñ1°1Ó5Øˆa‰D”�Q“‰K˜!˜A™$œs 1›v™+Ñ% q§s¡sÑ*Øˆq‰TˆE”#�a“&‰L˜1˜Q™4¤ A£™;Ñ&¨¯©Ñ+ñ,Ø./°©d°1·3±3©hñ7ò7ð 7ð 7ô �1�Q‘4˜Ÿ™‘8˜a ™d 1§3¡3™hÑ&¨¨1©¨a¯c©c©Ñ1°1Ø!ô#ß#+¡8£:°°1±°a·c±c±¸A¸a¹DÀÇÁ¹HÑ1DÀqÈÁtÈAÏCÉCÁxÑ1OòPð Pð Pà	�‰�C˜ 1 " a§c¡c Ó+€AØ)*¯©¸Ó):×)@Ñ)@Ó)B×C¡  AˆQ�—
‘
“‰_ÓCØˆq‰T�1�Q‘4˜˜1™˜q ™t Q q¡T¨1¨Q©4Ð0ò1ð 2ð 1à	�‰�C˜ ! Q§S¡S¨1¯3©3¡Y°·±¡_Ð!5Ó6€AØ�n‰n˜QÓ€GÜ�G˜A˜a™D‘MÓ" q¨¨1©¡v¬c°!«f¡}°Q¡¸¸1¹¸a¹Ñ'?Ø'(¨¨1©¡v¬c°!´b¸±d±(«mÑ';¸AÑ'=ñ(>à'(¨¡t¨A¡vñ(.à01°!°A±$±´s¸1¼rÀ!¹t¹8³}Ñ0DÀQÑ0Fñ(Gð ()¨¡t¨A¡vñ(.ò /ð /ð /ô �G˜A˜a™D‘MÓ" b¨¨1©¡g¬c°!´b¸±d±(«mÑ&;¸AÑ&=ØˆQ‰4�‰6ñ'Ø�a˜‘d‘Fœ3˜q›6‘M !‘Oñ'$Ø&'¨¡d¨1¡fñ'-Ø/0°°1±©v´c¸!¼bÀ¹d¹(³mÑ/CÀAÑ/Eñ'FØHIÈ!ÉÈQÉñ'Oò Oð Oð Oä�G˜A˜a™D‘MÓ" b¨¨1©¡g¬c°!´b¸±d±(«mÑ&;¸AÑ&=ÀÀ!ÁÀQÁÑ&FØˆQˆq‰T‰6”#�aœ"˜Q™$‘h“-Ñ Ñ!ñ'"Ø$% a¡D¨¡Fñ'+Ø-.¨q°©t©V´C¸³F©]¸1©_ñ'=Ø?@À¹tÀA¹vñ'Fò Fð Fñ Fùó Ds   Þgc                  óÚ  — t        d«      \  } }}}t        dd«      \  }}}}t        d«      }|j                  dd| |j                  g«      }	|	j                  dd||	j                  g«      }
|
j                  dd||
j
                  g«      }|j                  dd||j
                  g«      }t        d	«      \  }}}|	j                  |«      ||	j                  z  k(  sJ ‚|
j                  |«      ||
j                  z  ||	j                  z  z   k(  sJ ‚|j                  |«      ||j
                  z  ||
j                  z  z   ||	j                  z  z   k(  sJ ‚|j                  d
d||j
                  g«      }|j                  |«      dk(  sJ ‚|j                  |	«      | |j                  z  k(  sJ ‚|j                  |
«      | |	j                  z  ||
j                  z  z
  k(  sJ ‚|j                  |«      | |	j                  z  ||
j                  z  z
  ||
j
                  z  z
  k(  sJ ‚|j                  |«      | |j
                  z  k(  sJ ‚|	j                  |«      ||j                  z  k(  sJ ‚|	j                  |	«      dk(  sJ ‚|	j                  |
«      | |
j                  z  k(  sJ ‚|	j                  |«      | |
j                  z  ||
j
                  z  z
  k(  sJ ‚|	j                  |«      ||j                  z  ||j
                  z  z
  k(  sJ ‚|
j                  |«      ||	j                  z  ||	j                  z  z   k(  sJ ‚|
j                  |	«      ||	j                  z  k(  sJ ‚|
j                  |
«      dk(  sJ ‚|
j                  |«      | |
j
                  z  k(  sJ ‚|
j                  |«      ||	j                  z  ||	j                  z  z   ||j
                  z  z
  k(  sJ ‚|j                  |«      ||	j                  z  ||	j                  z  z   ||
j
                  z  z   k(  sJ ‚|j                  |	«      ||	j                  z  ||j
                  z  z   k(  sJ ‚|j                  |
«      ||
j
                  z  k(  sJ ‚|j                  |«      dk(  sJ ‚|j                  |«      ||	j                  z  ||	j                  z  z   ||
j
                  z  z   ||j
                  z  z
  k(  sJ ‚|j                  |«      ||j
                  z  k(  sJ ‚|j                  |	«      ||j
                  z  ||j                  z  z
  k(  sJ ‚|j                  |
«      ||j
                  z  ||	j                  z  z
  ||	j                  z  z
  k(  sJ ‚|j                  |«      ||j
                  z  ||	j                  z  z
  ||	j                  z  z
  ||
j
                  z  z
  k(  sJ ‚|j                  |«      dk(  sJ ‚|j                  |||j                  z  ||j
                  z  z   ||j                  z  z   «       |j                  |«      ||j                  z  ||j
                  z  z   ||j                  z  z   k(  sJ ‚|j                  |«      | |j                  z  | |j
                  z  z   | |j                  z  z   k(  sJ ‚|j                  |«      ||j                  z  ||j
                  z  z   ||j                  z  z   | |j
                  z  z   k(  sJ ‚|j                  |«      | |j                  z  | |j
                  z  z   | |j                  z  z   ||j
                  z  z   k(  sJ ‚t        d«      }t        dd«      }|j                  dd|| ||f«      }|j                  |«      d||z  ||z  z   ||z  z
  || z  z
  z  |j                  z  d||z  || z  z   ||z  z
  ||z  z
  z  |j
                  z  z   d||z  ||z  z   || z  z
  ||z  z
  z  |j                  z  z   k(  sJ ‚|j                  dd| ||fd«      }|j                  |«      t        |«      t        |«      z  |z  t        |«      |z  z   |j                  z  t        |«      t        |«      z  |z  t        |«      |z  z
  |j
                  z  z   t        |«      |z  |z   |j                  z  z   k(  sJ ‚|j                  dd| |j                  |j
                  z   f«      }|j                  |«      ||j                  |j
                  z   j                  «       z  k(  sJ ‚|j                  |«      | |j                  |j
                  z   j                  «       z  k(  sJ ‚y )Núq1 q2 q3 q4r.   r6   r   r3   r   r   r   zu1 u2 u3ÚA2r   Úq0r   Ú
Quaternionr/   r   ÚBodyi9  ÚG)r   r   r<   r=   r)   r>   Ú
ang_vel_inÚset_ang_velr   r   Ú	normalize)Úq1Úq2Úq3Úq4Úq1dÚq2dÚq3dÚq4dr6   r   r   r   r   Úu1Úu2Úu3rG   rH   Úq0dr   r   rK   s                         r"   Útest_ang_velr[   f   sw  € Ü# MÓ2�N€BˆˆB�Ü'¨°qÓ9Ñ€Cˆˆc�3Ü�sÓ€AØ	�‰�C˜ " a§c¡c Ó+€AØ	�‰�C˜ " a§c¡c Ó+€AØ	�‰�C˜ " a§c¡c Ó+€AØ	�‰�C˜ " a§c¡c Ó+€AÜ 
Ó+�J€BˆˆBØ�<‰<˜‹?˜s A§C¡C™iÒ'Ð'Ð'Ø�<‰<˜‹?˜s A§C¡C™i¨3°·±©)Ñ3Ò3Ð3Ð3Ø�<‰<˜‹?˜s A§C¡C™i¨3°·±©)Ñ3°s¸A¿C¹C±iÑ?Ò?Ð?Ð?à	
�‰�T˜6 B¨¯© 9Ó	-€BØ�<‰<˜‹?˜aÒÐÐØ�<‰<˜‹?˜s˜d 1§3¡3™hÒ&Ð&Ð&Ø�<‰<˜‹?˜s˜d 1§3¡3™h¨¨Q¯S©S©Ñ0Ò0Ð0Ð0Ø�<‰<˜‹?˜s˜d 1§3¡3™h¨¨Q¯S©S©Ñ0°3°q·s±s±7Ñ:Ò:Ð:Ð:Ø�<‰<˜Ó ˜t A§C¡C™xÒ'Ð'Ð'à�<‰<˜‹?˜c !§#¡#™gÒ%Ð%Ð%Ø�<‰<˜‹?˜aÒÐÐØ�<‰<˜‹? ˜e A§C¡C™iÒ'Ð'Ð'Ø�<‰<˜‹? ˜e A§C¡C™i¨#¨a¯c©c©'Ñ1Ò1Ð1Ð1Ø�<‰<˜Ó˜s 1§3¡3™w¨¨Q¯S©S©Ñ0Ò0Ð0Ð0à�<‰<˜‹?˜c !§#¡#™g¨¨A¯C©C©Ñ/Ò/Ð/Ð/Ø�<‰<˜‹?˜c !§#¡#™gÒ%Ð%Ð%Ø�<‰<˜‹?˜aÒÐÐØ�<‰<˜‹?˜s˜d 1§3¡3™hÒ&Ð&Ð&Ø�<‰<˜Ó˜s 1§3¡3™w¨¨Q¯S©S©Ñ0°3°q·s±s±7Ñ:Ò:Ð:Ð:à�<‰<˜‹?˜c !§#¡#™g¨¨A¯C©C©Ñ/°#°a·c±c±'Ñ9Ò9Ð9Ð9Ø�<‰<˜‹?˜c !§#¡#™g¨¨A¯C©C©Ñ/Ò/Ð/Ð/Ø�<‰<˜‹?˜c !§#¡#™gÒ%Ð%Ð%Ø�<‰<˜‹?˜aÒÐÐØ�<‰<˜Ó˜s 1§3¡3™w¨¨Q¯S©S©Ñ0°3°q·s±s±7Ñ:¸SÀÇÁ¹WÑDÒDÐDÐDà�=‰=˜Ó˜s 2§4¡4™xÒ'Ð'Ð'Ø�=‰=˜Ó˜s 2§4¡4™x¨#¨a¯c©c©'Ñ1Ò1Ð1Ð1Ø�=‰=˜Ó˜s 1§3¡3™w¨¨Q¯S©S©Ñ0°3°q·s±s±7Ñ:Ò:Ð:Ð:Ø�=‰=˜Ó˜s 1§3¡3™w¨¨Q¯S©S©Ñ0°3°q·s±s±7Ñ:¸SÀÇÁ¹WÑDÒDÐDÐDØ�=‰=˜Ó Ò!Ð!Ð!à‡M�M�!�R˜Ÿ™‘V˜b §¡™f‘_ r¨!¯#©#¡vÑ-Ô.Ø�<‰<˜‹?˜r 1§3¡3™h¨"¨a¯c©c©Ñ1°R¸¿¹±HÑ<Ò<Ð<Ð<Ø�<‰<˜‹? ˜s A§C¡C™i¨B¨3°·±©)Ñ3¸°s¸A¿C¹C±iÑ?Ò?Ð?Ð?Ø�<‰<˜‹?˜r 1§3¡3™h¨"¨a¯c©c©Ñ1°R¸¿¹±HÑ<ÀÀÀaÇcÁc¹zÑIÒIÐIÐIØ�<‰<˜‹? ˜s A§C¡C™i¨B¨3°·±©)Ñ3¸°s¸A¿C¹C±iÑ?À3ÈÏÉÁ)ÑKÒKÐKÐKä	˜Ó	€BÜ
˜˜qÓ
!€CØ	�‰�C˜¨¨B°°BÐ'7Ó8€AØ�<‰<˜‹?Ø	ˆS�2‰X˜˜b™Ñ  3¨¡8Ñ+¨c°B©hÑ6Ñ7¸!¿#¹#Ñ=Ø	ˆS�2‰X˜˜b™Ñ  3¨¡8Ñ+¨c°B©hÑ6Ñ7¸!¿#¹#Ñ=ñ	>à	ˆS�2‰X˜˜b™Ñ  3¨¡8Ñ+¨c°B©hÑ6Ñ7¸!¿#¹#Ñ=ñ	>ò?ð ?ð ?ð
 	
�‰�C˜ " b¨" ¨sÓ3€AØ�<‰<˜‹?¤ B£¬¨B«¡°Ñ 3´c¸"³g¸c±kÑ AÀ1Ç3Á3ÑFÜ	ˆR‹”�R“‰˜Ñ	œs 2›w s™{Ñ	*¨A¯C©CÑ/ñ 0Ü36°r³7¸3±;ÀÑ3DÀaÇcÁcÑ2Iñ Jò Kð Kð Kà	�‰�C˜ " a§c¡c¨A¯C©C¡i Ó1€AØ�<‰<˜‹?˜c Q§S¡S¨1¯3©3¡Y×$9Ñ$9Ó$;Ñ;Ò;Ð;Ð;Ø�<‰<˜‹?˜s˜d a§c¡c¨A¯C©C¡i×%:Ñ%:Ó%<Ñ<Ò<Ð<Ñ<r%   c                  óê  — t        d«      \  } }}}t        d«      }|j                  dd| |j                  g«      }|j                  dd||j                  g«      }|j                  dd||j
                  g«      }|j                  dd||j
                  g«      }|j                  dd	| ||gd
«      }	|j                  |«      t        t        | «       t        |«      z  t        |«      z  t        | «      t        |«      z  z   t        | «       t        |«      z  t        | «      t        |«      z  t        |«      z  t        |«      t        | «      z  z   gt        | «      t        |«      z  t        |«      t        |«      z  t        | «      z  z   t        | «      t        |«      z  t        | «      t        |«      z  t        |«      t        | «      z  t        |«      z  z
  gt        |«       t        |«      z  t        |«      t        |«      t        |«      z  gg«      k(  sJ ‚|j                  |«      t        t        | «      t        |«      z  t        |«      z  t        |«      t        |«       t        |«      z  t        | «      t        |«      z  t        |«      z  z   z  z
  t        |«       t        |«      z  t        | «      t        |«      z  t        |«      z  z
  t        |«      t        | «      z  t        |«      z  t        |«      t        |«       t        |«      z  t        | «      t        |«      z  t        |«      z  z   z  z   gt        | «      t        |«      z  t        |«      t        |«      z  t        | «      z  z   t        | «      t        |«      z  t        | «      t        |«      z  t        |«      t        | «      z  t        |«      z  z
  gt        |«      t        | «      z  t        |«      z  t        |«      t        |«      t        |«      z  t        | «      t        |«      z  t        |«      z  z   z  z
  t        |«      t        |«      z  t        | «      t        |«      z  t        |«      z  z
  t        |«      t        |«      z  t        | «      z  t        |«      t        |«      t        |«      z  t        | «      t        |«      z  t        |«      z  z   z  z   gg«      z
  }
|
j                  «       t        dd«      k(  sJ ‚|	j                  |«      t        t        |«      t        |«      z  t        |«      t        |«      z  t        |«       gt        | «      t        |«      z  t        |«      z  t        |«      t        | «      z  z
  t        | «      t        |«      z  t        |«      z  t        | «      t        |«      z  z   t        | «      t        |«      z  gt        | «      t        |«      z  t        |«      t        | «      z  t        |«      z  z   t        | «       t        |«      z  t        |«      t        |«      z  t        | «      z  z   t        | «      t        |«      z  gg«      k(  sJ ‚y )NrF   r6   r   r3   r   r   r   r   ÚSpaceÚ123r1   )r   r   r<   r=   r)   r>   ÚdcmÚMatrixr   r   Úexpandr	   )rO   rP   rQ   rR   r6   r   r   r   r   r   Útest_mats              r"   Útest_dcmrc   ¨   s‚  € Ü# MÓ2�N€BˆˆB�Ü�sÓ€AØ	�‰�C˜ " a§c¡c Ó+€AØ	�‰�C˜ " a§c¡c Ó+€AØ	�‰�C˜ " a§c¡c Ó+€AØ	�‰�C˜ " a§c¡c Ó+€AØ	�‰�C˜ 2 r¨2 ,°Ó6€AØ�5‰5�‹8”vÜˆr‹7ˆ”S˜“WÑ	œs 2›wÑ	&¬¨R«´3°r³7Ñ):Ñ	:¼cÀ"»g¸IÜˆB‹ñ=Ü�R“œ3˜r›7Ñ"¤S¨£WÑ,¬s°2«w¼¸R»Ñ/@Ñ@ð	BÜDGÈÃGÜˆB‹ñEÜ�b“'œC ›GÑ#¤c¨"£gÑ-ñE.Ü/2°2«w¼¸R»Ñ/@Ä#ÀbÃ'Ü�‹GñCÜ˜"“g¤ B£Ñ'¬#¨b«'Ñ1ñC2ðD3ä7:¸2³w°YÄÀRÃÑ5HÌ#ÈbË'ÜˆB‹”#�b“'Ñð5ð	ó ò ð ð ð �u‰u�Q‹xœ&Ü
ˆb‹'”C˜“GÑ
œc "›gÑ
%¬¨B«´S¸³W°9¼sÀ2»wÑ3FÜˆB‹”#�b“'ÑœC ›GÑ#ñ4$ñ )%ñ %Ü(+¨B« i´#°b³'Ñ&9¼CÀ»GÜ�‹Gñ=Ü˜"“gñ=ñ 'Ü" 2›w¬¨R«Ñ0´3°r³7Ñ:¼SÀ»WÌ#ÈbË'È	ÜˆB‹ñIÜ�b“'œC ›GÑ#¤c¨"£gÑ-ñI.ñ >/ñ  /ð
0ô 36°b³'¼CÀ»GÑ2CÜˆB‹”#�b“'ÑœC ›GÑ#ñ3$Ü%(¨£W¬s°2«wÑ%6¼¸B»Ä#ÀbÃ'Ñ8IÜ�‹G”c˜"“gÑ¤ B£Ñ'ñ9(ð2)ä+.¨r«7´S¸³WÑ+<¼sÀ2»wÑ+FÜˆB‹”3�r“7œS ›WÑ$¤s¨2£w´°R³Ñ'8¼3¸r»7Ñ'BÑBÑCñ,DÜEHÈÃWÜ�B“ñFÜ˜b›'¤C¨£GÑ+¬c°"«gÑ5ñF6Ü7:¸2³wÄÀRÃÑ7HÌ3ÈrË7Ñ7RÜ�B“œ3˜r›7¤S¨£WÑ,¬s°2«w¼¸R»Ñ/@Ä3ÀrÃ7Ñ/JÑJÑKñ8Lð+Mð	Nó	Oñ 	O€Hð �?‰?Ó¤ a¨£Ò+Ð+Ð+Ø�5‰5�‹8”vÜ
ˆb‹'”#�b“'‰/œ3˜r›7¤3 r£7™?¬S°«W¨HÐ	5Ü	ˆR‹”�R“‰œ˜R›Ñ	 ¤3 r£7¬3¨r«7¡?Ñ	2´C¸³G¼CÀ»G±OÄCÈÃGÑ4KÜˆB‹”�B“‰ñ5Ü˜R›¤ R£™ð	*Ü,/°«G´C¸³G©OÜˆB‹”�B“‰œ˜B›Ññ- Ü#& r£7 ¬3¨r«7Ñ!2´S¸³W¼SÀ»W±_ÄSÈÃWÑ5LÑ!LÜ	ˆR‹”�R“‰ð,ð	óò ð ñ r%   c            
      ó   — t        d«      } t        d«      }t        d«      \  }}}t        d«      \  }}}t        d«      \  }}	}
t        dd¬«      \  }}}t        dd¬«      \  }}}t        dd¬«      \  }}}t        |||g|||g||	|
gg«      }|j                  | d|«       |j                  j                  | «      }|j                  j                  | «      }|j                  j                  | «      }|j                  | |j                  t        |j                  | «      |j                  «      z  |j                  t        |j                  | «      |j                  «      z  z   |j                  t        |j                  | «      |j                  «      z  z   «       ||z  ||z  z   |	|z  z   |j                  z  ||z  ||z  z   |
|z  z   |j                  z  z   ||z  ||z  z   ||z  z   |j                  z  z   }|j                  | «      |z
  d	k(  sJ ‚y )
Nr   r   zC11 C12 C13zC21 C22 C23zC31 C32 C33r.   )ÚlevelÚDCMr   )r   r   r`   Úorientr)   r   r>   r=   rM   r   ÚdtrL   )r   r   Úc11Úc12Úc13Úc21Úc22Úc23Úc31Úc32Úc33Úc11dÚc12dÚc13dÚc21dÚc22dÚc23dÚc31dÚc32dÚc33drf   Úb1aÚb2aÚb3aÚexprs                            r"   Útest_w_diff_dcm1r   É   sú  € ô 	�sÓ€AÜ�sÓ€Aä" =Ó1�M€CˆˆcÜ" =Ó1�M€CˆˆcÜ" =Ó1�M€Cˆˆcä% m¸1Ô=Ñ€Dˆ$�Ü% m¸1Ô=Ñ€Dˆ$�Ü% m¸1Ô=Ñ€Dˆ$�ä
Ø	ˆc�3ˆØ	ˆc�3ˆØ	ˆc�3ˆðó €Cð ‡H�HˆQ��sÔØ�3‰3�-‰-˜Ó
€CØ�3‰3�-‰-˜Ó
€CØ�3‰3�-‰-˜Ó
€Cð ‡M�M�!�Q—S‘Sœ#˜sŸh™h q›k¨1¯3©3Ó/Ñ0Ø—S‘Sœ#˜sŸh™h q›k¨1¯3©3Ó/Ñ0ñ1à—S‘Sœ#˜sŸh™h q›k¨1¯3©3Ó/Ñ0ñ1ô 2ð
 �4‰x˜#˜d™(Ñ" S¨¡XÑ-¨q¯s©sÑ2Ø�4‰x˜#˜d™(Ñ" S¨¡XÑ-¨q¯s©sÑ2ñ3à�4‰x˜#˜d™(Ñ" S¨¡XÑ-¨q¯s©sÑ2ñ3€Dð �<‰<˜‹?˜TÑ! QÒ&Ð&Ñ&r%   c                  óè  — t        d«      \  } }}t        d«      }|j                  dd| |j                  g«      }|j                  dd||j                  g«      }|j                  dd||j
                  g«      }|j                  |«      j                  }|j                  dd|«      }|j                  |«      |j                  |«      cxk(  �r_t        t        |«      t        |«      z  t        | «      t        |«      z  t        |«      z  t        |«      t        | «      z  z   t        | «      t        |«      z  t        |«      t        | «      z  t        |«      z  z
  gt        |«       t        |«      z  t        | «       t        |«      z  t        |«      z  t        | «      t        |«      z  z   t        | «      t        |«      z  t        |«      t        |«      z  t        | «      z  z   gt        |«      t        | «       t        |«      z  t        | «      t        |«      z  gg«      k(  sJ ‚ J ‚|j                  |«      |j                  |«      z
  j                  |«      j                  «       d	k(  sJ ‚y )
Núq1:4r6   r   Úaxisr   r   r   rf   r   )r   r   r<   r)   r>   r=   r_   ÚTr`   r   r   rL   r   r   )	rO   rP   rQ   r6   r   r   r   rf   r   s	            r"   Útest_w_diff_dcm2r„   î   s	  € Ü Ó'�J€BˆˆBÜ�sÓ€AØ	�‰�C˜ " a§c¡c Ó+€AØ	�‰�C˜ " a§c¡c Ó+€AØ	�‰�C˜ " a§c¡c Ó+€Aà
�%‰%�‹(�*‰*€CØ	�‰�C˜ Ó$€Að
 �5‰5�‹8�q—u‘u˜Q“xõ 7¤6Ü	ˆR‹”�R“‰œ#˜b›'¤# b£'™/¬#¨b«'Ñ1ÜˆB‹”�B“‰ñÜ˜R›¤ R£™ÜˆB‹”�B“‰œ˜B›Ññ ð	!ä$'¨£G 8¬C°«GÑ#3Ü	ˆR‹ˆ”�R“Ñœ˜R›Ñ ¤3 r£7¬3¨r«7¡?Ñ2ÜˆB‹”�B“‰œ#˜b›'¤# b£'™/¬#¨b«'Ñ1Ñ1ð#3ô 
ˆR‹”3�r“7�(œ3˜r›7Ñ"¤C¨£G¬C°«G¡OÐ4ð+6ó $7ò 7ð 7ñ 7ð 7ð 7ð �L‰L˜‹O˜aŸl™l¨1›oÑ-×6Ñ6°qÓ9×BÑBÓDÈÒIÐIÑIr%   c                  óŒ   —  G d„ dt         «      }  | d«      }|j                  ddd|j                  g«      }t        || «      sJ ‚y )Nc                   ó   — e Zd Zy)ú>test_orientnew_respects_parent_class.<locals>.MyReferenceFrameN)Ú__name__Ú
__module__Ú__qualname__© r%   r"   ÚMyReferenceFramer‡     s   „ Ør%   rŒ   r   r   r3   r   )r   r<   r)   r9   )rŒ   r   r   s      r"   Ú$test_orientnew_respects_parent_classr�     sC   € ôœ>ô á˜Ó€AØ	�‰�C˜ ! Q§S¡S Ó*€AÜ�aÐ)Ô*Ð*Ñ*r%   c                  óJ  — t        d«      } t        d«      }| j                  dd|| j                  g«      }| j                  D �cg c]  }|dz   ‘Œ	 }}| j                  dd|| j                  g|¬«      }| j                  |j                  k(  sJ ‚|j                  |k(  sJ ‚y c c}w )Nr6   rO   Úar3   Ú1Úb©Úindices)r   r   r<   r=   r“   )r6   rO   r   r)   Úmindsr   s         r"   Ú%test_orientnew_respects_input_indicesr•     s–   € Ü�sÓ€AÜ	˜Ó	€BØ	�‰�C˜ " a§c¡c Ó+€AàŸI™IÖ&�qˆQˆs‹UÐ&€EÐ&Ø	�‰�C˜ " a§c¡c °EˆÓ:€Aà�9‰9˜Ÿ	™	Ò!Ð!Ð!Ø�9‰9˜ÒÐÑùò	 's   ÁB c                  ó  — t        d«      } t        d«      }| j                  dd|| j                  g«      }d|j                  j                  «       ›d|j                  d   ›d�d|j                  j                  «       ›d|j                  d	   ›d�d|j                  j                  «       ›d|j                  d
   ›d�g}d}| j                  D �cg c]  }|dz   ‘Œ	 }}d|j                  «       ›d|d   ›d�d|j                  «       ›d|d	   ›d�d|j                  «       ›d|d
   ›d�g}| j                  |d|| j                  g|¬«      }|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k7  sJ ‚y c c}w )Nr6   rO   r�   r3   z\mathbf{\hat{z}_r   ú}r.   r/   r‘   r�   z}_{z}})Úlatexs)r   r   r<   r=   ÚnameÚlowerr“   Ú
latex_vecs)	r6   rO   r   Údef_latex_vecsr™   r)   r“   Únew_latex_vecsr   s	            r"   Ú$test_orientnew_respects_input_latexsrž     sQ  € Ü�sÓ€AÜ	˜Ó	€BØ	�‰�C˜ " a§c¡c Ó+�Að 34·&±&·,±,µ.Ø—i‘i “lñ$à—v‘v—|‘|•~ q§y¡y°£|ñ(5à23·&±&·,±,µ.Ø—i‘i “lð$ð&€Nð €DØŸi™iÖ(˜ˆq�‹uÐ(€GÑ(Ø48·J±JµLØ˜a“jñ"à—z‘z•| W¨Q£Zñ&1à48·J±JµLØ˜a“jð"ð$€Nð 	
�‰�D˜& 2 q§s¡s )°NˆÓC€Aà�<‰<˜>Ò)Ð)Ð)Ø�<‰<˜>Ò)Ð)Ð)Ø�9‰9˜ÒÐÑùò )s   ÃE?c                  óô  — t        d«      } t        d«      }| j                  dd|| j                  g«      }d}| j                  D �cg c]
  }d|z   dz   ‘Œ }}| j                  |d|| j                  g|¬«      }t        |j                  «      D ]3  \  }}|j                  |j                  d	z   |j                  |   z   k(  rŒ3J ‚ t        |j                  «      D ]  \  }}|j                  ||   k(  rŒJ ‚ y c c}w )
Nr6   rO   r�   r3   r‘   Únotb_r�   r4   Ú_)r   r   r<   r=   r“   Ú	enumerateÚvarlistr™   )	r6   rO   r   r™   r)   Únew_variablesr   ÚjÚvars	            r"   Ú'test_orientnew_respects_input_variablesr§   1  sñ   € Ü�sÓ€AÜ	˜Ó	€BØ	�‰�C˜ " a§c¡c Ó+€Að €DØ,-¯I©IÖ6 q�W˜Q‘Y˜s“]Ð6€MÐ6Ø	�‰�D˜& 2 q§s¡s )°}ˆÓE€Aä˜1Ÿ9™9Ó%ò 7‰ˆˆ#Ø�x‰x˜1Ÿ6™6 C™<¨!¯)©)°A©,Ñ6Ó6Ð6Ð6ð7ô ˜1Ÿ9™9Ó%ò ,‰ˆˆ#Ø�x‰x˜=¨Ñ+Ó+Ð+Ð+ñ,ùò 7s   ÁC5c                  óX   — t        d«      } t        d«      }|j                  dd| d«       y )Nzu:3ÚIr   ÚspaceÚXYZ)r   r   r<   )Úur©   s     r"   Útest_issue_10348r­   A  s(   € Ü�uÓ€AÜ�sÓ€AØ‡K�K��W˜a Õ'r%   c                  ó¬   — t        d«      } | j                  ddd| j                  g«       t        d«      }| j                  |dd|j                  g«       y )Nr   r   r3   é#   r   éF   )r   r<   r>   rg   r=   )r   r   s     r"   Útest_issue_11503r±   G  sF   € Ü�sÓ€AØ‡K�K��V˜b !§#¡#˜YÔ'Ü�sÓ€AØ‡H�HˆQ�˜˜QŸS™S˜	Õ"r%   c                  óH  — t        d«      } t        d«      }t        d«      \  }}|j                  | ||j                  z  || j                  z  z   «       | j                  ||«      |j                   k(  sJ ‚| j                  |||«      |j                   | j                   fk(  sJ ‚|j                  | |«      |j                  k(  sJ ‚|j                  | ||«      |j                  | j                  fk(  sJ ‚| j                  | |«      dk(  sJ ‚|j                  ||«      dk(  sJ ‚y )Nr6   r   zu1, u2r   )r   r   rM   r)   r>   Úpartial_velocity)r6   r   rW   rX   s       r"   Útest_partial_velocityr´   N  s  € ä�sÓ€AÜ�sÓ€Aä˜HÓ%�F€Bˆà‡M�M�!�R˜!Ÿ#™#‘X  Q§S¡S¡Ñ(Ô)à×Ñ˜a Ó$¨¯©¨Ò,Ð,Ð,Ø×Ñ˜a  RÓ(¨a¯c©c¨T°A·C±C°4¨LÒ8Ð8Ð8à×Ñ˜a Ó$¨¯©Ò+Ð+Ð+Ø×Ñ˜a  RÓ(¨Q¯S©S°!·#±#¨JÒ6Ð6Ð6à×Ñ˜a Ó$¨Ò)Ð)Ð)Ø×Ñ˜a Ó$¨Ò)Ð)Ñ)r%   c            
      óP  — t        d«      } t        d«      }| j                  |dt        d«      «       | j                  |«      t	        g d¢g d¢g d¢g«      k(  sJ ‚|j                  | «      t	        g d¢g d¢g d¢g«      k(  sJ ‚| j                  |dt	        g d¢g d¢g d	¢g«      «       |j                  | «      t	        g d¢g d¢g d	¢g«      k(  sJ ‚| j                  |«      t	        g d¢g d¢g d
¢g«      k(  sJ ‚|j                  | «      j
                  | j                  |«      k(  sJ ‚y )Nr   r   rf   r1   ©r.   r   r   ©r   r.   r   ©r   r   r.   )r   r   éÿÿÿÿ)r¹   r   r   )r   r¹   r   )r   rg   r   r_   r`   rƒ   ©r   r   s     r"   Útest_issue_11498r»   a  sô   € Ü�sÓ€AÜ�sÓ€Að ‡H�HˆQ�”s˜1“vÔØ�5‰5�‹8”všyª)²YÐ?Ó@Ò@Ð@Ð@Ø�5‰5�‹8”všyª)²YÐ?Ó@Ò@Ð@Ð@ð
 ‡H�HˆQ�”všyª*²jÐAÓBÔCØ�5‰5�‹8”všyª*²jÐAÓBÒBÐBÐBØ�5‰5�‹8”všzª9²jÐAÓBÒBÐBÐBØ�5‰5�‹8�:‰:˜Ÿ™˜q›Ò!Ð!Ñ!r%   c            	      óì  ‡ ‡‡‡‡‡‡— t        t        d„ «       t        t        d„ «       t        t        d„ «       t        t        d„ «       t        t        d„ «       t        t        d„ «       t        t        d„ «       t        t        d„ «       t        t        d	„ «       t        t        d
„ «       t        d«      Š‰d   t	        d‰d«      k(  sJ ‚‰d   t	        d‰d«      k(  sJ ‚‰d   t	        d‰d«      k(  sJ ‚t        t        ˆfd„«       t        dg d¢«      Š‰d   ‰j
                  k(  sJ ‚‰d   ‰j                  k(  sJ ‚‰d   ‰j                  k(  sJ ‚t        t        ˆfd„«       t        ‰«      dk(  sJ ‚t        d«      Š t        d«      Št        d«      \  ŠŠŠŠt        t        ˆ ˆfd„«       t        t        ˆˆˆˆˆfd„«       t        t        ˆˆˆfd„«       t        t        ˆˆˆfd„«       t        t        ˆˆˆfd„«       t        t        ˆˆˆˆˆˆfd „«       t        t        ˆˆˆfd!„«       t        t        ˆˆˆˆˆfd"„«       t        t        ˆˆˆˆˆfd#„«       t        t        ˆˆˆˆfd$„«       t        t        ˆˆˆˆfd%„«       ‰j                  ‰d«       ‰j                  ‰«      t        d«      k(  sJ ‚‰j                  ‰d«       ‰j!                  ‰«      t        d«      k(  sJ ‚y )&Nc                  ó   — t        d«      S r'   ©r   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>t  s   € œn¨QÓ/€ r%   c                  ó   — t        dd«      S )Nr6   r   r¾   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>u  s   € œn¨S°!Ó4€ r%   c                  ó   — t        dddg«      S )Nr6   r   r.   r¾   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>v  s   € œ~¨c°A°q°6Ó:€ r%   c                  ó   — t        dg d¢«      S )Nr6   ©r   r.   r/   r¾   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>w  s   € œn¨S²)Ó<€ r%   c                  ó    — t        dg d¢d«      S ©Nr6   ©r�   r‘   Úcr   r¾   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>x  s   € œn¨S²/À1ÓE€ r%   c                  ó$   — t        dg d¢ddg«      S ©Nr6   rÅ   r   r.   r¾   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>y  s   € œ~¨c²?ÀQÈÀFÓK€ r%   c                  ó$   — t        dg d¢g d¢«      S ©Nr6   rÅ   rÂ   r¾   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>z  s   € œn¨S²/Â9ÓM€ r%   c                  ó&   — t        dg d¢g d¢d«      S rÄ   r¾   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>{  s   € œn¨S²/Ú1@À!óE€ r%   c                  ó*   — t        dg d¢g d¢ddg«      S rÈ   r¾   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>}  s   € œ~¨c²?Ú.=ÀÀ1¸vó G€ r%   c                  ó*   — t        dg d¢g d¢g d¢«      S rÊ   r¾   r‹   r%   r"   r#   z&test_reference_frame.<locals>.<lambda>  s   € œn¨S²/Ú-<ºióI€ r%   r6   r   ÚN_xr.   ÚN_yr/   ÚN_zc                  ó   •— ‰ d   S )Nr1   r‹   ©r6   s   €r"   r#   z&test_reference_frame.<locals>.<lambda>…  s   ø€ ˜q ™t€ r%   rÅ   r�   r‘   rÆ   c                  ó   •— ‰ d   S )NÚdr‹   rÒ   s   €r"   r#   z&test_reference_frame.<locals>.<lambda>Š  s   ø€ ˜q ™v€ r%   r   r   zq0 q1 q2 q3c                  ó*   •— ‰ j                  ‰dd«      S )Nrf   r   ©rg   rº   s   €€r"   r#   z&test_reference_frame.<locals>.<lambda>�  s   ø€ ˜aŸh™h q¨%°Ó3€ r%   c                  ó2   •— ‰ j                  ‰d‰‰‰gd«      S )Nr]   Ú222rÖ   )r   r6   rO   rP   rQ   s   €€€€€r"   r#   z&test_reference_frame.<locals>.<lambda>‘  s   ø€ ˜aŸh™h q¨'°B¸¸B°<ÀÓG€ r%   c                  ód   •— ‰ j                  ‰d‰‰j                  d‰j                  z  z   gd«      S )Nr3   r/   rØ   )rg   r)   r>   ©r   r6   rO   s   €€€r"   r#   z&test_reference_frame.<locals>.<lambda>’  s+   ø€ ˜aŸh™h q¨&°2°q·s±s¸QÀÇÁ¹W±}Ð2EÀuÓM€ r%   c                  ó*   •— ‰ j                  ‰d‰«      S ©Nr3   rÖ   rÚ   s   €€€r"   r#   z&test_reference_frame.<locals>.<lambda>“  s   ø€ ˜aŸh™h q¨&°"Ó5€ r%   c                  ó,   •— ‰ j                  ‰d‰g«      S rÜ   rÖ   rÚ   s   €€€r"   r#   z&test_reference_frame.<locals>.<lambda>”  s   ø€ ˜qŸx™x¨¨6°B°4Ó8€ r%   c                  ó4   •— ‰ j                  ‰d‰‰‰‰gd«      S )NrI   rØ   rÖ   )r   r6   rH   rO   rP   rQ   s   €€€€€€r"   r#   z&test_reference_frame.<locals>.<lambda>•  s   ø€ ˜aŸh™h q¨,¸¸RÀÀRÐ8HÈ%ÓP€ r%   c                  ó*   •— ‰ j                  ‰d‰«      S ©NrI   rÖ   )r   r6   rH   s   €€€r"   r#   z&test_reference_frame.<locals>.<lambda>–  s   ø€ ˜aŸh™h q¨,¸Ó;€ r%   c                  ó0   •— ‰ j                  ‰d‰‰‰g«      S rà   rÖ   ©r   r6   rH   rO   rP   s   €€€€€r"   r#   z&test_reference_frame.<locals>.<lambda>—  s   ø€ ˜aŸh™h q¨,¸¸RÀ¸ÓE€ r%   c                  ó0   •— ‰ j                  ‰d‰‰‰g«      S )NÚFoorÖ   râ   s   €€€€€r"   r#   z&test_reference_frame.<locals>.<lambda>˜  s   ø€ ¨¯©°°E¸BÀÀB¸<Ó(H€ r%   c                  ó0   •— ‰ j                  ‰d‰‰gd«      S )NrJ   Ú232rÖ   ©r   r6   rO   rP   s   €€€€r"   r#   z&test_reference_frame.<locals>.<lambda>™  s   ø€ ˜aŸh™h q¨&°2°r°(¸EÓB€ r%   c                  ó0   •— ‰ j                  ‰d‰‰gd«      S )Nr]   ræ   rÖ   rç   s   €€€€r"   r#   z&test_reference_frame.<locals>.<lambda>š  s   ø€ ˜aŸh™h q¨'°B¸°8¸UÓC€ r%   )r   Ú	TypeErrorr*   r   r   r)   r>   r=   Ústrr   Ú
IndexErrorÚNotImplementedErrorÚset_ang_accÚ
ang_acc_inr   rM   rL   )r   r   r6   rH   rO   rP   rQ   s   @@@@@@@r"   Útest_reference_framerï   s  s=  þ€ Ü
Œ9Ñ/Ô0Ü
Œ9Ñ4Ô5Ü
Œ:Ñ:Ô;Ü
Œ9Ñ<Ô=Ü
Œ9ÑEÔFÜ
Œ:ÑKÔLÜ
Œ9ÑMÔNÜ
Œ9ñ Eô Fä
Œ:ñ Gô Hä
Œ9ñ Iô Jä�sÓ€AØˆQ‰4”= ¨¨1Ó-Ò-Ð-Ð-ØˆQ‰4”= ¨¨1Ó-Ò-Ð-Ð-ØˆQ‰4”= ¨¨1Ó-Ò-Ð-Ð-Ü
Œ:“|Ô$Ü�sšOÓ,€AØˆS‰6�Q—S‘SŠ=Ðˆ=ØˆS‰6�Q—S‘SŠ=Ðˆ=ØˆS‰6�Q—S‘SŠ=Ðˆ=Ü
Œ:“~Ô&Üˆq‹6�SŠ=Ðˆ=ä�sÓ€AÜ�sÓ€AÜ˜]Ó+�N€BˆˆB�Ü
Œ9Ô3Ô4Ü
Œ9×GÔHÜ
Œ9ÕMÔNÜ
Œ9Õ5Ô6Ü
Œ:Õ8Ô9Ü
Œ9×PÐPÔQÜ
Œ9Õ;Ô<Ü
Œ9×EÔFÜ
Ô× HÔIÜ
Œ9ÖBÔCÜ
Œ9ÖCÔDà‡M�M�!�QÔØ�<‰<˜‹?œf Q›iÒ'Ð'Ð'Ø‡M�M�!�QÔØ�<‰<˜‹?œf Q›iÒ'Ð'Ñ'r%   c                  ó&   — t        t        d„ «       y )Nc                  ó   — t        d«      S r'   r   r‹   r%   r"   r#   z"test_check_frame.<locals>.<lambda>£  s
   € ¤L°£O€ r%   )r   r   r‹   r%   r"   Útest_check_framerò   ¢  s   € Ü
Œ?Ñ3Õ4r%   c                  ó  — t        d«      \  } }}t        | «      }t        | «      }t        |«      }t        |«      }t        |«      }t        |«      }t        ||z  ||z  |z  ||z  z
  ||z  |z  ||z  z   g||z  ||z  |z  ||z  z   ||z  |z  ||z  z
  g| ||z  ||z  gg«      }	t	        d«      }
t	        d«      }|j                  |
d|	«       |j                  |
«      }||z  | j                  «       z  ||j                  «       z  z   }||z  |j                  «       z  ||j                  «       z  z   }t        |j                  |
j                  «      |z
  «      dk(  sJ ‚t        |j                  |j                  «      |z
  «      dk(  sJ ‚y )Nr�   r   r   rf   r   )r   r   r   r`   r   rg   rL   Údiffr   r   r>   )rO   rP   rQ   Ús1Úc1Ús2Úc2Ús3Úc3r_   r   r   ÚAwBÚalpha2Úbeta2s                  r"   Útest_dcm_diff_16824rþ   ¦  s‹  € ô   Ó'�J€BˆˆBä	ˆR‹€BÜ	ˆR‹€BÜ	ˆR‹€BÜ	ˆR‹€BÜ	ˆR‹€BÜ	ˆR‹€Bä
�2�b‘5˜"˜R™% ™( R¨¡UÑ*¨B¨r©E°"©H°r¸"±uÑ,<Ð=Ø�b‘5˜"˜R™% ™( R¨¡UÑ*¨B¨r©E°"©H°r¸"±uÑ,<Ð=Ø�3˜"˜R™%¨B¨r©EÐ2ð4ó 5€Cô 	�sÓ€AÜ�sÓ€AØ‡H�HˆQ��sÔà
�,‰,�q‹/€Cà�‰U�2—7‘7“9‰_˜r "§'¡'£)™|Ñ+€FØˆr‰E�"—'‘'“)‰O˜b §¡£™lÑ*€Eä�C—G‘G˜AŸC™C“L 6Ñ)Ó*¨aÒ/Ð/Ð/Ü�C—G‘G˜AŸC™C“L 5Ñ(Ó)¨QÒ.Ð.Ñ.r%   c                  óz  — t        d«      \  } }}t        d«      \  }}}t        d«      \  }}}t        dd«      \  }	}
}t        dd«      \  }}}t        dd«      \  }}}t        d«      }t        d«      }t        | ||g|||g|||gg«      }||z  ||z  z   ||z  z   |j                  z  ||	z  ||z  z   ||z  z   |j                  z  z   | |z  ||
z  z   ||z  z   |j
                  z  z   }|j                  ||«       |j                  |«      |k(  sJ ‚|j                  |«      |k(  sJ ‚|j                  |«      | k(  sJ ‚y )Núc_{xx}, c_{yy}, c_{zz}úc_{xy}, c_{xz}, c_{yx}úc_{yz}, c_{zx}, c_{zy}r.   r   r   )	r   r   r`   r)   r>   r=   Úorient_explicitr_   rL   )ÚcxxÚcyyÚczzÚcxyÚcxzÚcyxÚcyzÚczxÚczyÚdcxxÚdcyyÚdczzÚdcxyÚdcxzÚdcyxÚdcyzÚdczxÚdczyr   r   ÚB_C_AÚB_w_As                         r"   Útest_orient_explicitr  Æ  sx  € Ü"Ð#;Ó<�M€CˆˆcÜ"Ð#;Ó<�M€CˆˆcÜ"Ð#;Ó<�M€CˆˆcÜ%Ð&>ÀÓBÑ€Dˆ$�Ü%Ð&>ÀÓBÑ€Dˆ$�Ü%Ð&>ÀÓBÑ€Dˆ$�Ü�sÓ€AÜ�sÓ€AÜ�S˜#˜s�OØ˜#˜s�OØ˜#˜s�Oð%ó &€Eð �$‰h˜˜T™Ñ! C¨¡HÑ,¨a¯c©cÑ1Ø�‰X˜˜D™Ñ  3 t¡8Ñ+¨Q¯S©SÑ0ñ1à�‰X˜˜D™Ñ  3 t¡8Ñ+¨Q¯S©SÑ0ñ1€Eð ×Ñ�a˜ÔØ�5‰5�‹8�uÒÐÐØ�<‰<˜‹?˜eÒ#Ð#Ð#Ø�<‰<˜‹?˜u˜fÒ$Ð$Ñ$r%   c                  ó2  — t        d«      \  } }}t        d«      \  }}}t        d«      \  }}}t        | ||g|||g|||gg«      }	t        d«      }
t        d«      }|j                  |
|	«       |j	                  |
«      t        | ||g|||g|||gg«      k(  sJ ‚y )Nr   r  r  r   r   )r   r`   r   Ú
orient_dcmr_   )r  r  r  r  r  r	  r
  r  r  r  r   r   s               r"   Útest_orient_dcmr  Ú  sÂ   € Ü"Ð#;Ó<�M€CˆˆcÜ"Ð#;Ó<�M€CˆˆcÜ"Ð#;Ó<�M€CˆˆcÜ�S˜#˜s�OØ˜#˜s�OØ˜#˜s�Oð%ó &€Eô 	�sÓ€AÜ�sÓ€AØ‡L�L��EÔØ�5‰5�‹8”v  S¨#˜Ø # S¨#˜Ø # S¨#˜ð0ó 1ò 1ð 1ñ 1r%   c                  ó�  ‡‡— t        d«      Št        d«      Š‰j                  ‰‰j                   d«       ‰j                  ‰«      } ‰j                  ‰‰j                  d«       ‰j                  ‰«      }‰j                  ‰d‰j                   «       ‰j                  ‰«      }| |k(  sJ ‚||k(  sJ ‚t	        t
        ˆˆfd„«       y )Nr   r   r.   r¹   c                  ó*   •— ‰ j                  ‰dd«      S )Nr.   )r(   rº   s   €€r"   r#   z"test_orient_axis.<locals>.<lambda>ó  s   ø€ ˜aŸm™m¨A¨q°!Ó4€ r%   )r   r(   r)   r_   r   ré   )ÚA1rG   ÚA3r   r   s      @@r"   Útest_orient_axisr   è  sŸ   ù€ Ü�sÓ€AÜ�sÓ€AØ‡M�M�!�Q—S‘S�D˜!ÔØ	
�‰ˆq‹€BØ‡M�M�!�Q—S‘S˜"ÔØ	
�‰ˆq‹€BØ‡M�M�!�Q˜Ÿ™˜ÔØ	
�‰ˆq‹€BØ�Š8€Oˆ8Ø�Š8€Oˆ8Ü
Œ9Ô4Õ5r%   c            
      ó|  — t        d«      } t        d«      }|j                  | dd«       |j                  | «      t        t	        d«      t        d«      dz  t        d«       t	        d«      z  gdt	        d«      t        d«      gt        d«      t        d«       t	        d«      z  t	        d«      dz  gg«      k(  sJ ‚y )Nr   r   )r.   r.   r   ÚXYXr.   r/   r   )r   Úorient_body_fixedr_   r`   r   r   rº   s     r"   Útest_orient_bodyr$  õ  s®   € Ü�sÓ€AÜ�sÓ€AØ×Ñ˜˜7 EÔ*Ø�5‰5�‹8”v¤ A£¬¨A«°©	´C¸³F°7¼3¸q»6±>ÐBÀQÌÈAËÔPSÐTUÓPVÐDWÔZ]Ð^_ÓZ`ÔcfÐghÓciÐbiÔjmÐnoÓjpÑbpÔruÐvwÓrxÐz{Ñr{ÐY|Ð}Ó~Ò~Ð~Ñ~r%   c                  óp	  — t        d«      \  } }}t        d«      \  }}}t        dd«      \  }}}t        d«      t        d«      }
}	|
j                  |	| ||fd«       |	j	                  |
«      t        t        | «       t        |«      z  t        |«      z  t        | «      t        |«      z  z   t        | «       t        |«      z  t        | «      t        |«      z  t        |«      z  t        |«      t        | «      z  z   gt        | «      t        |«      z  t        |«      t        |«      z  t        | «      z  z   t        | «      t        |«      z  t        | «      t        |«      z  t        |«      t        | «      z  t        |«      z  z
  gt        |«       t        |«      z  t        |«      t        |«      t        |«      z  gg«      k(  sJ ‚|
j                  |	«      j                  |
«      t        t        |«       t        |«      z  |z  t        |«      |z  z   gt        |«      |z  |z   gt        |«      |z  t        |«      t        |«      z  |z  z   gg«      k(  sJ ‚t        d«      t        d«      }
}	|
j                  |	| ||fd«       |	j	                  |
«      t        t        |«      t        |«       t        |«      z  t        |«      t        |«      z  gt        |«      t        | «      z  t        | «       t        |«      z  t        |«      t        | «      z  t        |«      z  z   t        | «       t        |«      z  t        |«      t        |«      z  t        | «      z  z
  gt        |«      t        | «      z  t        | «      t        |«      z  t        |«      z  t        |«      t        | «      z  z   t        | «       t        |«      z  t        |«      z  t        | «      t        |«      z  z   gg«      k(  sJ ‚|
j                  |	«      j                  |
«      t        t        |«      |z  |z   gt        |«       t        |«      z  |z  gt        |«      t        |«      z  |z  gg«      k(  sJ ‚t        d«      t        d«      }
}	|
j                  |	|||fd«       |
j                  |	«      t        d	«      k(  sJ ‚y )
Nr�   úc1:4r.   r   r   Úzxyéƒ   é{   r   )r   r   r   r#  r_   r`   r   r   rL   Ú	to_matrixr   ©rO   rP   rQ   rö   rø   rú   rW   rX   rY   r   r   s              r"   Útest_orient_body_advancedr,  ü  s0  € Ü Ó'�J€BˆˆBÜ˜“�J€BˆˆBÜ ¨Ó*�J€BˆˆBô ˜#Ó¤¨sÓ 3€q€AØ×Ñ˜˜B  B˜<¨Ô/Ø�5‰5�‹8”vÜ
ˆb‹'ˆ”C˜“GÑ	œc "›gÑ	%¬¨B«´#°b³'Ñ(9Ñ	9¼CÀ»G¸8ÄcÈ"ÃgÑ;MÜ	ˆR‹”3�r“7Ñ	œS ›WÑ	$¤s¨2£w´°R³Ñ'8Ñ	8ð	:ä	ˆR‹”3�r“7Ñ	œS ›W¤s¨2£wÑ.´°R³Ñ8Ñ	8¼#¸b»'ÄCÈÃGÑ:KÜ	ˆR‹”3�r“7Ñ	œS ›W¤s¨2£wÑ.´°R³Ñ8Ñ	8ð	:ä
ˆb‹'ˆ”C˜“GÑ	œS ›W¤c¨"£g´°B³Ñ&7Ð8ð:ó ;ò ;ð ;ð ;ð �<‰<˜‹?×$Ñ$ QÓ'¬6Ü
ˆb‹'ˆ”C˜“GÑ	˜bÑ	 ¤3 r£7¨R¡<Ñ	/Ð0Ü	ˆR‹�2‰˜Ñ	ÐÜ	ˆR‹�2‰œ˜B›¤# b£'Ñ)¨BÑ.Ñ	.Ð/ð31ó ,2ò 2ð 2ð 2ô ˜#Ó¤¨sÓ 3€q€AØ×Ñ˜˜B  B˜<¨Ô-Ø�5‰5�‹8”vÜ	ˆR‹”3�r“7�(œS ›WÑ$¤c¨"£g´°B³Ñ&7Ð8Ü	ˆR‹”3�r“7Ñ	œS ›W˜H¤s¨2£wÑ.´°R³¼3¸r»7Ñ1BÄSÈÃWÑ1LÑLÜ
ˆb‹'ˆ”C˜“GÑ	œc "›g¬¨B«Ñ/´#°b³'Ñ9Ñ	9ð	;ä	ˆR‹”3�r“7Ñ	œC ›G¤c¨"£gÑ-´°B³Ñ7¼#¸b»'ÄCÈÃGÑ:KÑKÜ
ˆb‹'ˆ”C˜“GÑ	œc "›gÑ	%¬¨B«´#°b³'Ñ(9Ñ	9ð	;ð	<ó =ò =ð =ð =ð �<‰<˜‹?×$Ñ$ QÓ'¬6Ü	ˆR‹�2‰˜Ñ	ÐÜ
ˆb‹'ˆ”C˜“GÑ	˜bÑ	 Ð!Ü	ˆR‹”3�r“7Ñ	˜RÑ	Ð ð3"ó ,#ò #ð #ð #ô ˜#Ó¤¨sÓ 3€q€AØ×Ñ˜˜B  B˜<¨Ô-Ø�<‰<˜‹?œf Q›iÒ'Ð'Ñ'r%   c                  óp	  — t        d«      \  } }}t        d«      \  }}}t        dd«      \  }}}t        d«      t        d«      }
}	|
j                  |	||| fd«       |	j	                  |
«      t        t        | «       t        |«      z  t        |«      z  t        | «      t        |«      z  z   t        | «       t        |«      z  t        | «      t        |«      z  t        |«      z  t        |«      t        | «      z  z   gt        | «      t        |«      z  t        |«      t        |«      z  t        | «      z  z   t        | «      t        |«      z  t        | «      t        |«      z  t        |«      t        | «      z  t        |«      z  z
  gt        |«       t        |«      z  t        |«      t        |«      t        |«      z  gg«      k(  sJ ‚|
j                  |	«      j                  |
«      t        t        |«       t        |«      z  |z  t        |«      |z  z   gt        |«      |z  |z   gt        |«      |z  t        |«      t        |«      z  |z  z   gg«      k(  sJ ‚t        d«      t        d«      }
}	|
j                  |	||| fd«       |	j	                  |
«      t        t        |«      t        |«       t        |«      z  t        |«      t        |«      z  gt        |«      t        | «      z  t        | «       t        |«      z  t        |«      t        | «      z  t        |«      z  z   t        | «       t        |«      z  t        |«      t        |«      z  t        | «      z  z
  gt        |«      t        | «      z  t        | «      t        |«      z  t        |«      z  t        |«      t        | «      z  z   t        | «       t        |«      z  t        |«      z  t        | «      t        |«      z  z   gg«      k(  sJ ‚|
j                  |	«      j                  |
«      t        t        |«      |z  |z   gt        |«       t        |«      z  |z  gt        |«      t        |«      z  |z  gg«      k(  sJ ‚t        d«      t        d«      }
}	|
j                  |	|||fd«       |
j                  |	«      t        d	«      k(  sJ ‚y )
Nr�   r&  r.   r   r   Úyxzr(  r)  r   )r   r   r   Úorient_space_fixedr_   r`   r   r   rL   r*  r   r+  s              r"   Útest_orient_space_advancedr0  #  s0  € ä Ó'�J€BˆˆBÜ˜“�J€BˆˆBÜ ¨Ó*�J€BˆˆBô ˜#Ó¤¨sÓ 3€q€AØ×Ñ˜˜R  R˜L¨%Ô0Ø�5‰5�‹8”vÜ
ˆb‹'ˆ”C˜“GÑ	œc "›gÑ	%¬¨B«´#°b³'Ñ(9Ñ	9¼CÀ»G¸8ÄcÈ"ÃgÑ;MÜ	ˆR‹”3�r“7Ñ	œS ›WÑ	$¤s¨2£w´°R³Ñ'8Ñ	8ð	:ä	ˆR‹”3�r“7Ñ	œS ›W¤s¨2£wÑ.´°R³Ñ8Ñ	8¼#¸b»'ÄCÈÃGÑ:KÜ	ˆR‹”3�r“7Ñ	œS ›W¤s¨2£wÑ.´°R³Ñ8Ñ	8ð	:ä
ˆb‹'ˆ”C˜“GÑ	œS ›W¤c¨"£g´°B³Ñ&7Ð8ð:ó ;ò ;ð ;ð ;ð �<‰<˜‹?×$Ñ$ QÓ'¬6Ü
ˆb‹'ˆ”C˜“GÑ	˜bÑ	 ¤3 r£7¨R¡<Ñ	/Ð0Ü	ˆR‹�2‰˜Ñ	ÐÜ	ˆR‹�2‰œ˜B›¤# b£'Ñ)¨BÑ.Ñ	.Ð/ð31ó ,2ò 2ð 2ð 2ô ˜#Ó¤¨sÓ 3€q€AØ×Ñ˜˜R  R˜L¨#Ô.Ø�5‰5�‹8”vÜ	ˆR‹”3�r“7�(œS ›WÑ$¤c¨"£g´°B³Ñ&7Ð8Ü	ˆR‹”3�r“7Ñ	œS ›W˜H¤s¨2£wÑ.´°R³¼3¸r»7Ñ1BÄSÈÃWÑ1LÑLÜ
ˆb‹'ˆ”C˜“GÑ	œc "›g¬¨B«Ñ/´#°b³'Ñ9Ñ	9ð	;ä	ˆR‹”3�r“7Ñ	œC ›G¤c¨"£gÑ-´°B³Ñ7¼#¸b»'ÄCÈÃGÑ:KÑKÜ
ˆb‹'ˆ”C˜“GÑ	œc "›gÑ	%¬¨B«´#°b³'Ñ(9Ñ	9ð	;ð	<ó =ò =ð =ð =ð �<‰<˜‹?×$Ñ$ QÓ'¬6Ü	ˆR‹�2‰˜Ñ	ÐÜ
ˆb‹'ˆ”C˜“GÑ	˜bÑ	 Ð!Ü	ˆR‹”3�r“7Ñ	˜RÑ	Ð ð3"ó ,#ò #ð #ð #ô ˜#Ó¤¨sÓ 3€q€AØ×Ñ˜˜R  R˜L¨#Ô.Ø�<‰<˜‹?œf Q›iÒ'Ð'Ñ'r%   c                  óô  — t        d«      \  } }}t         j                  }t        d«      }t        d«      }|j                  || ||fd«       |j	                  |«      }|j
                  d   d   |k(  sJ ‚|j
                  d   d   d   t        |«      t        |«      z  | j                  |«      z  t        |«      |j                  |«      z  z   k(  sJ ‚|j
                  d   d   d   t        |«      t        |«      z  | j                  |«      z  t        |«      |j                  |«      z  z
  k(  sJ ‚|j
                  d   d   d   t        |«      | j                  |«      z  |j                  |«      z   k(  sJ ‚y)	zƒThis test ensures that the simplest form of that linear system solution
    is returned, thus the == for the expression comparison.zpsi, theta, varphir   r   ÚZXZr   r.   r/   N)	r   Ú_tr   r#  rL   Úargsr   rô   r   )ÚpsiÚthetaÚphiÚtr   r   ÚA_w_Bs          r"   Útest_orient_body_simple_ang_velr:  K  se  € ô %Ð%9Ó:�O€Cˆ�Ü×Ñ€AÜ�sÓ€AÜ�sÓ€AØ×Ñ˜˜C ¨Ð,¨eÔ4Ø�L‰L˜‹O€EØ�:‰:�a‰=˜Ñ˜qÒ Ð Ð Ø�:‰:�a‰=˜Ñ˜AÑ¤3 u£:¬c°#«hÑ#6°s·x±xÀ³{Ñ#BÜ#& s£8¨E¯J©J°q«MÑ#9ñ$:ò ;ð ;ð ;à�:‰:�a‰=˜Ñ˜AÑ¤3 u£:¬c°#«hÑ#6°s·x±xÀ³{Ñ#BÜ#& s£8¨E¯J©J°q«MÑ#9ñ$:ò ;ð ;ð ;à�:‰:�a‰=˜Ñ˜AÑ¤# e£*¨S¯X©X°a«[Ñ"8¸3¿8¹8ÀA»;Ñ"FÒFÐFÑFr%   c                  ó¦   — t        d«      } t        d«      }|j                  | dd«       |j                  | «      t        g d¢g d¢g d¢g«      k(  sJ ‚y )Nr   r   ©r   r   r   r^   r¶   r·   r¸   )r   r/  r_   r`   rº   s     r"   Útest_orient_spacer=  ]  sJ   € Ü�sÓ€AÜ�sÓ€AØ×Ñ˜˜G UÔ+Ø�5‰5�‹8”všyª)²YÐ?Ó@Ò@Ð@Ñ@r%   c                  ó¤   — t        d«      } t        d«      }|j                  | d«       |j                  | «      t        g d¢g d¢g d¢g«      k(  sJ ‚y )Nr   r   )r   r   r   r   r<  )r   Úorient_quaternionr_   r`   rº   s     r"   Útest_orient_quaternionr@  c  sH   € Ü�sÓ€AÜ�sÓ€AØ×Ñ˜˜9Ô%Ø�5‰5�‹8”všyª)²YÐ?Ó@Ò@Ð@Ñ@r%   c                  ó
  — t        d«      } t        d«      }t        d«      }t        d«      \  }}}|j                  | | j                  |«       |j                  ||j                  |«       t	        j
                  d¬«      5 }t	        j                  d«       | j                  ||j                  |«       t        |d   j                  t        «      sJ ‚d	t        |d   j                  «      v sJ ‚	 d d d «       y # 1 sw Y   y xY w)
Nr   r   r   úa b cT)ÚrecordÚalwaysr¹   zxLoops are defined among the orientation of frames. This is likely not desired and may cause errors in your calculations.)r   r   r(   r)   ÚwarningsÚcatch_warningsÚsimplefilterÚ
issubclassÚcategoryÚUserWarningrê   Úmessage)r   r   r   r�   r‘   rÆ   Úws          r"   Útest_looped_frame_warningrM  i  sè   € Ü�sÓ€AÜ�sÓ€AÜ�sÓ€Aä�gÓ�G€A€qˆ!Ø‡M�M�!�Q—S‘S˜!ÔØ‡M�M�!�Q—S‘S˜!Ôä	×	 Ñ	 ¨$Ô	/ð j°1Ü×Ñ˜hÔ'Ø	�‰�a˜Ÿ™˜aÔ Ü˜!˜B™%Ÿ.™.¬+Ô6Ð6Ð6ðTÜWZÐ[\Ð]_Ñ[`×[hÑ[hÓWiñjð 	jñ j÷	j÷ jñ jús   ÂA.C9Ã9Dc                  óà  — t        d«      } t        d«      }t        d«      }t        d«      \  }}}|j                  | | j                  |«       | j                  |t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      ik(  sJ ‚|j                  | t        g d¢dt        |«      t        |«      gdt        |«       t        |«      gg«      ik(  sJ ‚|j                  i k(  sJ ‚|j                  ||j                  |«       | j                  |t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      ik(  sJ ‚|j                  | t        g d¢dt        |«      t        |«      gdt        |«       t        |«      gg«      |t        g d¢dt        |«      t        |«      gdt        |«       t        |«      gg«      ik(  sJ ‚|j                  |t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      ik(  sJ ‚| j                  ||j                  |«       |j                  |t        g d¢dt        |«      t        |«      gdt        |«       t        |«      gg«      | t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      ik(  sJ ‚| j                  |t        g d¢dt        |«      t        |«      gdt        |«       t        |«      gg«      ik(  sJ ‚|j                  |t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      ik(  sJ ‚y )Nr   r   r   rB  r¶   r   )r   r   r(   r)   Ú	_dcm_dictr`   r   r   )r   r   r   r�   r‘   rÆ   s         r"   Útest_frame_dictrP  y  s(  € Ü�sÓ€AÜ�sÓ€AÜ�sÓ€Aä�gÓ�G€A€qˆ!à‡M�M�!�Q—S‘S˜!ÔØ�;‰;˜1œf¢i°´C¸³F¼SÀ»V¸GÐ0DÀaÌÈQËÔRUÐVWÓRXÐEYÐ%ZÓ[Ð\Ò\Ð\Ð\Ø�;‰;˜1œf¢i°´S¸³V¼SÀ»VÐ0DÀaÌ#ÈaË&ÈÔRUÐVWÓRXÐEYÐ%ZÓ[Ð\Ò\Ð\Ð\Ø�;‰;˜"ÒÐÐà‡M�M�!�Q—S‘S˜!Ôà�;‰;˜1œf¢i°´C¸³F¼SÀ»V¸GÐ0DÀaÌÈQËÔRUÐVWÓRXÐEYÐ%ZÓ[Ð\Ò\Ð\Ð\Ø�;‰;˜1œf¢i°´S¸³V¼SÀ»VÐ0DÀaÌ#ÈaË&ÈÔRUÐVWÓRXÐEYÐ%ZÓ[Ø	Œ6’9˜a¤# a£&¬#¨a«&Ð1°1´s¸1³v°g¼sÀ1»vÐ2FÐGÓHðJò Jð Jð Jà�;‰;˜1œf¢i°´C¸³F¼SÀ»V¸GÐ0DÀaÌÈQËÔRUÐVWÓRXÐEYÐ%ZÓ[Ð\Ò\Ð\Ð\à‡M�M�!�Q—S‘S˜!Ôà�;‰;˜1œf¢i°´S¸³V¼SÀ»VÐ0DÀaÌ#ÈaË&ÈÔRUÐVWÓRXÐEYÐ%ZÓ[Ø	Œ6’9˜a¤ Q£¬#¨a«&¨Ð1°1´c¸!³f¼sÀ1»vÐ2FÐGÓHðJò Jð Jð Jà�;‰;˜1œf¢i°´S¸³V¼SÀ»VÐ0DÀaÌ#ÈaË&ÈÔRUÐVWÓRXÐEYÐ%ZÓ[Ð\Ò\Ð\Ð\Ø�;‰;˜1œf¢i°´C¸³F¼SÀ»V¸GÐ0DÀaÌÈQËÔRUÐVWÓRXÐEYÐ%ZÓ[Ð\Ò\Ð\Ñ\r%   c                  óf  — t        d«      } t        d«      }t        d«      }t        d«      }t        d«      \  }}}|j                  | | j                  |«       |j                  ||j                  |«       |j                  ||j                  |«       |j                  |t        g d¢dt        |«      t        |«      gdt        |«       t        |«      gg«      ik(  sJ ‚|j                  |t        g d¢dt        |«      t        |«      gdt        |«       t        |«      gg«      |t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      ik(  sJ ‚|j                  | t        g d¢dt        |«      t        |«      gdt        |«       t        |«      gg«      |t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      ik(  sJ ‚| j                  |t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      ik(  sJ ‚|j                  |j                  k(  sJ ‚|j                  | «       t        | j                  j                  «       «      | ||gk(  sJ ‚t        |j                  j                  «       «      || gk(  sJ ‚t        | j                  j                  «       «      |gk(  sJ ‚t        |j                  j                  «       «      |gk(  sJ ‚| j                  | j                  k7  sJ ‚| j                  ||j                  |«       | j                  |t        g d¢dt        |«      t        |«      gdt        |«       t        |«      gg«      ik(  sJ ‚| j                  | j                  k(  sJ ‚|j                  |t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      | t        g d¢dt        |«      t        |«       gdt        |«      t        |«      gg«      ik(  sJ ‚y )Nr   r   r   r   rB  r¶   r   )r   r   r(   r)   rO  r`   r   r   Ú
_dcm_cacher_   ÚlistÚkeys)r   r   r   r   r�   r‘   rÆ   s          r"   Útest_dcm_cache_dictrU  “  sÀ  € Ü�sÓ€AÜ�sÓ€AÜ�sÓ€AÜ�sÓ€Aä�gÓ�G€A€qˆ!à‡M�M�!�Q—S‘S˜!ÔØ‡M�M�!�Q—S‘S˜!ÔØ‡M�M�!�Q—S‘S˜!Ôà�;‰;˜1œf¢i°´S¸³V¼SÀ»VÐ0DÀaÌ#ÈaË&ÈÔRUÐVWÓRXÐEYÐ%ZÓ[Ð\Ò\Ð\Ð\Ø�;‰;˜1œf¢i°´S¸³V¼SÀ»VÐ0DÀaÌ#ÈaË&ÈÔRUÐVWÓRXÐEYÐ%ZÓ[Ø	Œ6’9˜a¤ Q£¬#¨a«&¨Ð1°1´c¸!³f¼sÀ1»vÐ2FÐGÓHðJò Jð Jð Jà�;‰;˜1œf¢i°´S¸³V¼SÀ»VÐ0DÀaÌ#ÈaË&ÈÔRUÐVWÓRXÐEYÐ%ZÓ[Ø	Œ6’9˜a¤ Q£¬#¨a«&¨Ð1°1´c¸!³f¼sÀ1»vÐ2FÐGÓHðJò Jð Jð Jà�;‰;˜1œf¢i°´C¸³F¼SÀ»V¸GÐ0DÀaÌÈQËÔRUÐVWÓRXÐEYÐ%ZÓ[Ð\Ò\Ð\Ð\à�;‰;˜!Ÿ,™,Ò&Ð&Ð&à‡E�Eˆ!„HÜ�—‘×!Ñ!Ó#Ó$¨¨A¨q¨	Ò1Ð1Ð1Ü�—‘×!Ñ!Ó#Ó$¨¨A¨Ò.Ð.Ð.Ü�—‘× Ñ Ó"Ó#¨ sÒ*Ð*Ð*Ü�—‘× Ñ Ó"Ó#¨ sÒ*Ð*Ð*Ø�;‰;˜!Ÿ,™,Ò&Ð&Ð&à‡M�M�!�Q—S‘S˜!ÔØ�;‰;˜1œf¢i°´S¸³V¼SÀ»VÐ0DÀaÌ#ÈaË&ÈÔRUÐVWÓRXÐEYÐ%ZÓ[Ð\Ò\Ð\Ð\Ø�;‰;˜!Ÿ,™,Ò&Ð&Ð&Ø�;‰;˜1œf¢i°´C¸³F¼SÀ»V¸GÐ0DÀaÌÈQËÔRUÐVWÓRXÐEYÐ%ZÓ[Ø	Œ6’9˜a¤ Q£¬#¨a«&¨Ð1°1´c¸!³f¼sÀ1»vÐ2FÐGÓHðJò Jð Jñ Jr%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  t        j                  | j                  | j                  «      k(  sJ ‚|j                  t        j                  |j                  |j                  «      k(  sJ ‚y ©Nr6   r   )r�   Ú2Ú3r’   )r   Úxxr   Úouterr)   ©r6   r   s     r"   Útest_xx_dyadr]  µ  ób   € Ü�sÓ€AÜ�s¢OÔ4€AØ�4‰4”6—<‘< §¡ Q§S¡SÓ)Ò)Ð)Ð)Ø�4‰4”6—<‘< §¡ Q§S¡SÓ)Ò)Ð)Ñ)r%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  t        j                  | j                  | j
                  «      k(  sJ ‚|j                  t        j                  |j                  |j
                  «      k(  sJ ‚y rW  )r   Úxyr   r[  r)   r>   r\  s     r"   Útest_xy_dyadra  »  r^  r%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  t        j                  | j                  | j
                  «      k(  sJ ‚|j                  t        j                  |j                  |j
                  «      k(  sJ ‚y rW  )r   Úxzr   r[  r)   r=   r\  s     r"   Útest_xz_dyadrd  Á  r^  r%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  t        j                  | j                  | j
                  «      k(  sJ ‚|j                  t        j                  |j                  |j
                  «      k(  sJ ‚y rW  )r   Úyxr   r[  r>   r)   r\  s     r"   Útest_yx_dyadrg  Ç  r^  r%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  t        j                  | j                  | j                  «      k(  sJ ‚|j                  t        j                  |j                  |j                  «      k(  sJ ‚y rW  )r   Úyyr   r[  r>   r\  s     r"   Útest_yy_dyadrj  Í  r^  r%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  t        j                  | j                  | j
                  «      k(  sJ ‚|j                  t        j                  |j                  |j
                  «      k(  sJ ‚y rW  )r   Úyzr   r[  r>   r=   r\  s     r"   Útest_yz_dyadrm  Ó  r^  r%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  t        j                  | j                  | j
                  «      k(  sJ ‚|j                  t        j                  |j                  |j
                  «      k(  sJ ‚y rW  )r   Úzxr   r[  r=   r)   r\  s     r"   Útest_zx_dyadrp  Ù  r^  r%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  t        j                  | j                  | j
                  «      k(  sJ ‚|j                  t        j                  |j                  |j
                  «      k(  sJ ‚y rW  )r   Úzyr   r[  r=   r>   r\  s     r"   Útest_zy_dyadrs  ß  r^  r%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  t        j                  | j                  | j                  «      k(  sJ ‚|j                  t        j                  |j                  |j                  «      k(  sJ ‚y rW  )r   Úzzr   r[  r=   r\  s     r"   Útest_zz_dyadrv  å  r^  r%   c                  ó  — t        d«      } t        dg d¢¬«      }| j                  | j                  | j                  z   | j                  z   k(  sJ ‚|j                  |j                  |j                  z   |j                  z   k(  sJ ‚y rW  )r   r¬   rZ  ri  ru  r\  s     r"   Útest_unit_dyadicrx  ë  sf   € Ü�sÓ€AÜ�s¢OÔ4€AØ�3‰3�!—$‘$˜Ÿ™‘+ §¡Ñ$Ò$Ð$Ð$Ø�3‰3�!—$‘$˜Ÿ™‘+ §¡Ñ$Ò$Ð$Ñ$r%   c                  óT  — t        d«      } t        d«      }|j                  | | j                  d«       |j                  | «      }t	        j
                  t	        j                  | «      «      }t        |j                  j                  «       «      d   }|j                  |«      |k(  sJ ‚y )Nr6   r   r.   r   )
r   r(   r)   r_   ÚpickleÚloadsÚdumpsÚtuplerO  rT  )r6   r   ÚA_C_NÚN1r  s        r"   Útest_pickle_framer€  ò  s   € Ü�sÓ€AÜ�sÓ€AØ‡M�M�!�Q—S‘S˜!ÔØ�E‰E�!‹H€EÜ	�‰”f—l‘l 1“oÓ	&€BÜ	ˆr�|‰|× Ñ Ó"Ó	# AÑ	&€BØ�6‰6�"‹:˜ÒÐÑr%   )IÚsympy.core.numbersr   Úsympy.core.symbolr   Úsympy.simplifyr   Ú(sympy.functions.elementary.trigonometricr   r   Úsympy.matrices.denser   r	   Úsympy.matrices.immutabler
   r`   Úsympy.simplify.simplifyr   Úsympy.physics.vectorr   r   r   r   r   r   r   Úsympy.physics.vector.framer   Úsympy.physics.vector.vectorr   Úsympy.testing.pytestr   rE  rz  r+   rD   r[   rc   r   r„   r�   r•   rž   r§   r­   r±   r´   r»   rï   rò   rþ   r  r  r   r$  r,  r0  r:  r=  r@  rM  rP  rU  r]  ra  rd  rg  rj  rm  rp  rs  rv  rx  r€  r‹   r%   r"   ú<module>rŒ     s  ðÝ !Ý %Ý #ß ?ß -Ý CÝ ,÷'÷ 'ñ 'õ 4Ý 7Ý 'Û Û ò3ò47Fòt?=òDòB#'òJJò,+ò	ò ò4,ò (ò#ò*ò&"ò$,(ò^5ò/ò@%ò(1ò6òò$(òN%(òPGò$AòAòjò ]ò4 JòD*ò*ò*ò*ò*ò*ò*ò*ò*ò%ór%   