
    sh)                         S r SSKrSSKJrJrJrJrJrJrJ	r	J
r
Jr  SSKJr  SSKJrJrJrJrJr  SSKJr  \" SSS	9r\" S
5      r\" S5      r\" S5      r " S S5      r " S S5      rg)zFTests for the ``sympy.physics.mechanics.wrapping_geometry.py`` module.    N)	IntegerRationalSSymbolacoscospisinsqrt)Eq)PointReferenceFrameWrappingCylinderWrappingSpheredynamicsymbolssimplifyrTpositivexqNc                   0
   \ rS rSr\S 5       r\\R                  R                  S\	R                  \" S5      \-  \R                  -  /5      S 5       5       r\\R                  R                  S\\R                  -  \\R                  -  \	R                  4\\R                  -  \\R                   -  \	R"                  \-  \-  4\\R                  -  \\R                  * -  \\-  4\\R                  * -  \\R                  -  \\-  4\\R                  -  \\" S5      -  \	R"                  -  \R                  \R                   -   -  \" SS5      \-  \-  4\\" S5      -  \	R"                  -  \R                  \R                   -   -  \\" S	5      -  \" SS	5      -  \R                  \R                   -   \R*                  -   -  \\" \" S
5      \" SS	5      -  5      -  4/5      S 5       5       r\\R                  R                  S\\R                  -  \\R                   -  \R                   \R                  4\\R                  -  \* \R                   -  \R                   * \R                  4\\R                   -  \" S5      S-  \-  \R                  -  \" S5      S-  \-  \R                   -  -
  \R                  \" S5      S-  \R                  -  \" S5      S-  \R                   -  -   4\\R                  -  \S-  \R                  -  \" S	5      S-  \-  \R                   -  -   \R                   \" S	5      S-  \R                  -  S\R                   -  -
  4\\R                  -  \" S5      S-  \-  \R                  -  \" S5      S-  \-  \R                   -  -   \R                   \" S5      S-  \R                  -  \" S5      S-  \R                   -  -
  4/5      S 5       5       r\\R                  R                  S\\R                  -  \\" \5      -  \R                  -  \\" \5      -  \R                   -  -   /5      S 5       5       r\\R                  R                  S\\R                  -  \* \R                  -  4\* \R                   -  \\R                   -  4\\" \5      -  \R                  -  \\" \5      -  \R                   -  -   \* \" \5      -  \R                  -  \\" \5      -  \R                   -  -
  4/5      S 5       5       rSrg)TestWrappingSphere!   c                     [        SSS9n [        S5      n[        X5      n[        U[        5      (       d   e[	        US5      (       d   eUR
                  U :X  d   e[	        US5      (       d   eUR                  U:X  d   eg )Nr   Tr   pOradiuspoint)r   r   r   
isinstancehasattrr   r    )r   r   spheres      ڈ/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/sympy/physics/mechanics/tests/test_wrapping_geometry.pytest_valid_constructor)TestWrappingSphere.test_valid_constructor#   s~    3&4[&&.1111vx((((}}!!!vw''''||r!!!    position   c                 @   [        SSS9n[        S5      n[        X5      n[        S5      nUR                  X 5        [        S5      nUR                  X 5        Sn[        R
                  " [        US9   UR                  XE5        S S S 5        g ! , (       d  f       g = f	Nr   Tr   r   p1p2z'point .* does not lie on the surface of)match)r   r   r   set_pospytestraises
ValueErrorgeodesic_length)r(   r   r   r#   r,   r-   	error_msgs          r$   1test_geodesic_length_point_not_on_surface_invalidDTestWrappingSphere.test_geodesic_length_point_not_on_surface_invalid.   sz     3&4[&4[


2 4[


2 >	]]:Y7""2* 877   4B
Bz position_1, position_2, expected            c                 
   [        SSS9n[        S5      n[        X45      n[        S5      nUR                  X@5        [        S5      nUR                  XA5        [	        [        UR                  Xg5      U5      5      (       d   eg Nr   Tr   r   r,   r-   )r   r   r   r/   r   r   r3   )
position_1
position_2expectedr   r   r#   r,   r-   s           r$   test_geodesic_length'TestWrappingSphere.test_geodesic_length>   sp    " 3&4[&4[


2"4[


2"611"98DEEEEr'   z*position_1, position_2, vector_1, vector_2      ?c                     [        SSS9n[        S5      n[        XE5      n[        S5      nUR                  XP5        [        S5      nUR                  XQ5        X#4n	UR	                  Xx5      U	:X  d   eg r=   )r   r   r   r/   geodesic_end_vectors)
r>   r?   vector_1vector_2r   r   r#   r,   r-   r@   s
             r$   test_geodesic_end_vectors,TestWrappingSphere.test_geodesic_end_vectorsZ   sn    6 3&4[&4[


2"4[


2"'**22h>>>r'   c                 >   [        SSS9n[        S5      n[        X5      n[        S5      nUR                  X 5        [        S5      nUR                  X 5        [        R
                  " [        5         UR                  XE5      nS S S 5        g ! , (       d  f       g = fr=   r   r   r   r/   r0   r1   r2   rE   )r(   r   r   r#   r,   r-   _s          r$   ,test_geodesic_end_vectors_invalid_coincident?TestWrappingSphere.test_geodesic_end_vectors_invalid_coincident   su     3&4[&4[


2 4[


2 ]]:&++B3A '&&   3B
Bzposition_1, position_2c                 >   [        SSS9n[        S5      n[        X#5      n[        S5      nUR                  X05        [        S5      nUR                  X15        [        R
                  " [        5         UR                  XV5      nS S S 5        g ! , (       d  f       g = fr=   rK   )r>   r?   r   r   r#   r,   r-   rL   s           r$   8test_geodesic_end_vectors_invalid_diametrically_oppositeKTestWrappingSphere.test_geodesic_end_vectors_invalid_diametrically_opposite   su      3&4[&4[


2"4[


2"]]:&++B3A '&&rO    N)__name__
__module____qualname____firstlineno__staticmethodr%   r0   markparametrizer   Zeror   r   r   r   r5   yHalfr	   r   r   zr   rA   rH   r   r   r
   rM   rQ   __static_attributes__rS   r'   r$   r   r   !   s   " " [[Z!&&'!*Q,qss2B)CD+ E + [[*qssUAaccE166"qssUAaccE166"9Q;'qssUAqssdFBqD!tVQqssUBqD!qssUAd1gIaff$accACCi0(1a.2CA2EF$q'	!&& !##),$q'	(1a.(!##)acc/:$tAwx1~-..	

F  
F [[4Wa!##gqssACC(Wqb133hacc*ACCQ	A#d1gai!macc&99Q	ACC$q'!)acc/1	 ACCAd1gai!macc11Q	ACC#)+	 ACCQ	A#d1gai!macc&99Q	ACC$q'!)acc/1		
2?3 4? [[	
QSS!c!f*qss"QQZ!##%5564	 
4 [[ Wqb133hR!##Xq133wCF
QSS 1s1v:#33SVacc!AAJ$44	

4
 4r'   r   c                      \ rS rSr\S 5       r\\R                  R                  S\	R                  S4\\R                  -  S4\\R                  -  S4\\R                  \R                  -   R                  5       -  S4\" S5      \-  \R                  -  S4\\R"                  \R                  -   -  S4\\" S5      \R"                  -  \R                  -   -  S4\" S5      \R"                  -  \\" S5      \R                  -  \R                  -   R                  5       -  -   S4\\" \5      \R                  -  \" \5      \R                  -  -   -  S4/	5      S 5       5       r\\R                  R                  S\	R                  \" S5      \-  \R                  -  /5      S	 5       5       r\\R                  R                  S
\R"                  \\R                  -  \\R                  -  \	R                  4\R"                  \\R                  -  \R"                  \\R                  -  -   \	R.                  4\R"                  \\R                  -  \* \R"                  -  \\R                  -  -   \" \S-  5      4\R"                  * \\R                  -  \\R"                  -  \\R                  -  -   \" \S-  5      4\R"                  \\R                  -  \\R                  -  \	R2                  \-  \" \S-  5      -  4\R"                  * \\R                  -  \\R                  -  \" S5      \	R2                  -  \-  \" \S-  5      -  4\R"                  \\R                  -  \\R                  -  \" S5      \	R2                  -  \-  \" \S-  5      -  4\R"                  * \\R                  -  \\R                  -  \	R2                  \-  \" \S-  5      -  4\R"                  \\R                  -  \\" \5      \R                  -  \" \5      \R                  -  -   -  \" \S-  \S-  -  5      4\R"                  * \\R                  -  \\" \5      \R                  -  \" \5      \R                  -  -   -  \" \S-  \" S5      \-  \-
  S-  -  5      4/
5      S 5       5       r\\R                  R                  S\R                  \\R"                  -  \\R                  -  \R                  \R"                  4\R                  \\R"                  -  \* \R"                  -  \R                  \R                  4\R                  \* \R"                  -  \\R"                  -  \R                  * \R                  * 4\R                  * \\R"                  -  \* \R"                  -  \R                  * \R                  * 4\R                  * \* \R"                  -  \\R"                  -  \R                  \R                  4\R                  \\R"                  -  \* \R                  -  \R                  \R"                  * 4\R                  \\R                  -  \" S5      S-  \-  \R"                  -  \" S5      S-  \-  \R                  -  -
  \R"                  * \" S5      * S-  \R"                  -  \" S5      S-  \R                  -  -
  4\R                  \\R"                  -  \S-  \R"                  -  \" S5      S-  \-  \R                  -  -   \R                  \" S5      S-  \R"                  -  S\R                  -  -
  4\R                  \\R"                  -  \" S5      S-  \-  \R"                  -  \" S5      S-  \-  \R                  -  -   \R                  \" S5      S-  \R"                  -  \" S5      S-  \R                  -  -
  4\R                  \\R"                  -  \\R"                  -  \R                  -   \R                  \R                  * 4\R                  \\R"                  -  \\R                  -  \S-  \-  \R                  -  -   \" S5      S-  \R                  -  \" S5      S-  \R                  -  -   \" S5      S-  \R"                  -  \" S5      S-  \R                  -  -
  4\R                  \\R"                  -  \\" \5      -  \R"                  -  \\" \5      -  \R                  -  -   \R                  \" \5      \R"                  -  \" \5      \R                  -  -
  4/5      S 5       5       r\\R                  R                  S\R                  \\R"                  -  4\R                  \\" \5      -  \R"                  -  \\" \5      -  \R                  -  -   \R                  -   4/5      S 5       5       rSrg)TestWrappingCylinder   c                     [        S5      n [        SSS9n[        S5      n[        XU R                  5      n[        U[        5      (       d   e[        US5      (       d   eUR                  U:X  d   e[        US5      (       d   eUR                  U:X  d   e[        US5      (       d   eUR                  U R                  :X  d   eg )	Nr   r   Tr   r   r   r    axis)
r   r   r   r   r   r!   r"   r   r    rd   )r   r   r   cylinders       r$   r%   +TestWrappingCylinder.test_valid_constructor   s    33&4[#A133/($45555x****!###x))))~~###x((((}}###r'   zposition, expectedFTr)   c                     [        SSS9n[        S5      n[        X#[        R                  5      n[        S5      nUR                  X05        UR                  U5      UL d   eg )Nr   Tr   r   r,   )r   r   r   r   r   r/   point_on_surface)r(   r@   r   r   re   r,   s         r$   test_point_is_on_surface-TestWrappingCylinder.test_point_is_on_surface   sW      3&4[#A133/4[


2 ((,888r'   r(   c                 ^   [        SSS9n[        S5      n[        X[        R                  5      n[        S5      nUR                  X 5        [        S5      nUR                  X 5        Sn[        R                  " [        US9   UR                  XE5        S S S 5        g ! , (       d  f       g = fr+   )
r   r   r   r   r   r/   r0   r1   r2   r3   )r(   r   r   re   r,   r-   r4   s          r$   r5   FTestWrappingCylinder.test_geodesic_length_point_not_on_surface_invalid   s     3&4[#A133/4[


2 4[


2 >	]]:Y7$$R, 877s   B
B,z&axis, position_1, position_2, expectedr:   c                    [        SSS9n[        S5      n[        XEU 5      n[        S5      nUR                  XQ5        [        S5      nUR                  XR5        [	        [        UR                  Xx5      U5      5      (       d   eg r=   )r   r   r   r/   r   r   r3   )	rd   r>   r?   r@   r   r   re   r,   r-   s	            r$   rA   )TestWrappingCylinder.test_geodesic_length   sr    * 3&4[#A404[


2"4[


2"833B;XFGGGGr'   z0axis, position_1, position_2, vector_1, vector_2rC   c                    [        SSS9n[        S5      n[        XVU 5      n[        S5      nUR                  Xa5        [        S5      n	U	R                  Xb5        X44n
[	        S UR                  X5       5       5      nX:X  d   eg )Nr   Tr   r   r,   r-   c              3   B   #    U  H  nUR                  5       v   M     g 7f)Nr   ).0
end_vectors     r$   	<genexpr>ATestWrappingCylinder.test_geodesic_end_vectors.<locals>.<genexpr>Q  s#      
C
 !!Cs   )r   r   r   r/   tuplerE   )rd   r>   r?   rF   rG   r   r   re   r,   r-   r@   end_vectorss               r$   rH   .TestWrappingCylinder.test_geodesic_end_vectors
  s    z 3&4[#A404[


2"4[


2"' 
&;;BC
 

 &&&r'   zaxis, positionc                 @   [        SSS9n[        S5      n[        X#U 5      n[        S5      nUR                  X15        [        S5      nUR                  X15        [        R
                  " [        5         UR                  XV5      nS S S 5        g ! , (       d  f       g = fr=   )r   r   r   r/   r0   r1   r2   rE   )rd   r(   r   r   re   r,   r-   rL   s           r$   rM   ATestWrappingCylinder.test_geodesic_end_vectors_invalid_coincidentX  sw     3&4[#A404[


2 4[


2 ]]:&--b5A '&&r7   rS   N)rT   rU   rV   rW   rX   r%   r0   rY   rZ   r   r[   r   r   r\   r^   	normalizer   r   r   r   r
   ri   r5   Oner   r]   r	   rA   rH   rM   r_   rS   r'   r$   ra   ra      sv   $ $ [[VVUOqssUDMqssUDMacc	$$&&-QZ\!##u%acc	]D!
133$%t,QZ^aACC!##!5 @ @ BBBDIAqss
SVACCZ'($/
	
9 9 [[Z!&&'!*Q,qss2B)CD- E - [[0SS!ACC%133'SS!ACC%quaee,SS!ACC%!ACC!ACC%ad4ccT1QSS5!ACC%!ACC%-ad4SS!ACC%133r	$q!t* 45ccT1QSS5!ACC%AFF!22!5d1a4j!@ASS!ACC%133
166 1" 4T!Q$Z ?@ccT1QSS5!ACC%41:!56SS!ACC%CF133JQ34d1a419oFae3q6!##:Aqss
*+QT71:b=1,q001	
&
H' (
H [[:SS!acc'1qss7ACC-SS!acc'A28QSS!##.SS1"qss(AGaccTACC40ccT1qss7QBHqssdQSSD1ccTA28QWacc133/SS!acc'A28QSS133$/ACCQ	A#d1gai!macc&99##q'	!acc!DGAIO3 ACCAd1gai!macc11Q	ACC#)+ ACCQ	A#d1gai!macc&99Q	ACC$q'!)acc/1 ACCACC!## ACCACC"Q$(QSS.(Q	ACC$q'!)acc/1Q	ACC$q'!)acc/1 ACCCF
QSS 1s1v:#33As1v|+U1	
4j'k4 l'0 [[SS!acc'NSS!c!f*qss"QQZ!##%55;<	
6 6r'   ra   )__doc__r0   sympyr   r   r   r   r   r   r	   r
   r   sympy.core.relationalr   sympy.physics.mechanicsr   r   r   r   r   sympy.simplify.simplifyr   r   r   r   r   r   ra   rS   r'   r$   <module>r      sr    L 
 
 
 %  - 3
3K33M4 M4`z6 z6r'   