+
    ipa                         R t ^ RIt^ RIHtHtHtHtHtHt ^ RI	H
t
HtHtHtHtHtHtHtHtHtHt ^ RIHt R t ! R R4      t ! R R	4      t ! R
 R4      tR# )z<Tests for the ``sympy.physics.mechanics.pathway.py`` module.N)RationalSymbolcospisinsqrt)ForceLinearPathwayObstacleSetPathwayPathwayBasePointReferenceFrameWrappingCylinderWrappingGeometryBaseWrappingPathwayWrappingSpheredynamicsymbols)simplifyc                     V  Uu. uF7  pVP                  VP                  VP                  P                  4       4      NK9  	  up# u upi N)	__class__locationvectorr   )loadsloads   & h/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/physics/mechanics/tests/test_pathway.py_simplify_loadsr      sE     D 	t}}dkk&:&:&<=  s   =Ac            
         a  ] tR t^$t o R t]]P                  P                  R]	! R4      ]	! R4      3/ 3.4      R 4       4       t
]]P                  P                  R]	! R4      3]	! R4      ]	! R4      ]	! R4      3.4      R 4       4       t]]P                  P                  RR	]	! R4      3]	! R4      R	3.4      R
 4       4       t]P                  ! RR7      R 4       tR tR tR tR tR tR tR tR tR tR tR tRtV tR	# )TestLinearPathwayc                >    \        \        \        4      '       g   Q hR # r   )
issubclassr	   r   selfs   &r   test_is_pathway_base_subclass/TestLinearPathway.test_is_pathway_base_subclass&   s    -5555    zargs, kwargspApBc                L   V w  r#\        V / VB p\        V\         4      '       g   Q h\        VR 4      '       g   Q h\        VP                  4      ^8X  g   Q hVP                  ^ ,          VJ g   Q hVP                  ^,          VJ g   Q h\        VP                  ^ ,          \
        4      '       g   Q hVP                  ^ ,          P                  R8X  g   Q h\        VP                  ^,          \
        4      '       g   Q hVP                  ^,          P                  R8X  g   Q hR# )attachmentsr&   r'   N)r	   
isinstancehasattrlenr)   r   name)argskwargspointApointBinstances   &&   r   test_valid_constructor(TestLinearPathway.test_valid_constructor)   s     $1&1(M2222x////8''(A---##A&&000##A&&000(..q159999##A&++t333(..q159999##A&++t333r%   r)   pZc                    \         P                  ! \        4      ;_uu_ 4        \        V !  pR R R 4       R #   + '       g   i     R # ; ir   )pytestraises
ValueErrorr	   r)   _s   & r   )test_invalid_attachments_incorrect_number;TestLinearPathway.test_invalid_attachments_incorrect_number=   s,     ]]:&&{+A '&&&	   
7A	Nc                    \         P                  ! \        4      ;_uu_ 4        \        V !  pR R R 4       R #   + '       g   i     R # ; ir   )r7   r8   	TypeErrorr	   r:   s   & r   "test_invalid_attachments_not_point4TestLinearPathway.test_invalid_attachments_not_pointI   s,     ]]9%%{+A &%%%r>   Tautousec                   \        R 4      V n        \        R4      V n        \        R4      V n        \        V P                  V P                  4      V n        \        R4      V n        \        R4      V n	        \        R4      V n
        \        R^4      V n        \        R^4      V n        \        R^4      V n        \        R4      V n        R# )Nr&   r'   q1q2q3FN)r   rF   r   r&   r'   r	   pathwayr   rG   rH   rI   q1dq2dq3dr   rJ   r!   s   &r   _linear_pathway_fixture)TestLinearPathway._linear_pathway_fixtureU   s    $++$TWWdgg6 & & &!$*!$*!$*r%   c                   \        V P                  V P                  4      p\        P                  ! \
        4      ;_uu_ 4        R Vn        R R R 4       \        P                  ! \        4      ;_uu_ 4        R VP                  ^ &   R R R 4       \        P                  ! \        4      ;_uu_ 4        R VP                  ^&   R R R 4       R #   + '       g   i     L; i  + '       g   i     L_; i  + '       g   i     R # ; ir   )r	   r&   r'   r7   r8   AttributeErrorr)   r@   r"   r2   s   & r   test_properties_are_immutable/TestLinearPathway.test_properties_are_immutablec   s     $''2]]>**#'H  +]]9%%&*H  # &]]9%%&*H  # &%	 +*%%%%%s$   C	5C/C/	C	C,	/D 	c                n    \        V P                  V P                  4      pR p\        V4      V8X  g   Q hR# )zLinearPathway(pA, pB)N)r	   r&   r'   reprr"   rK   expecteds   &  r   	test_reprTestLinearPathway.test_reprl   s-    1*G}(((r%   c                    V P                   P                  V P                  ^V P                  P                  ,          4       V P
                  P                  ^8X  g   Q hR#    N)r'   set_posr&   rF   xrK   lengthr!   s   &r   test_static_pathway_length,TestLinearPathway.test_static_pathway_lengthq   s<    46688,||""a'''r%   c                    V P                   P                  V P                  ^V P                  P                  ,          4       V P
                  P                  ^ 8X  g   Q hR# r]   )r'   r_   r&   rF   r`   rK   extension_velocityr!   s   &r   &test_static_pathway_extension_velocity8TestLinearPathway.test_static_pathway_extension_velocityu   s<    46688,||..!333r%   c                   V P                   P                  V P                  ^V P                  P                  ,          4       V P                  V P
                  ) V P                  P                  ,          3V P                   V P
                  V P                  P                  ,          3.pV P                  P                  V P
                  4      V8X  g   Q hR# r]   )r'   r_   r&   rF   r`   rJ   rK   to_loadsr"   rY   s   & r   test_static_pathway_to_loads.TestLinearPathway.test_static_pathway_to_loadsy   s    46688,WWhtvvxx'(WWdffTVVXXo&
 ||$$TVV,888r%   c                *   V P                   P                  V P                  ^V P                  ,          V P                  P
                  ,          4       ^\        V P                  ^,          4      ,          pV P                  P                  V8X  g   Q hR# r]   )	r'   r_   r&   rG   rF   r`   r   rK   ra   rj   s   & r   test_2D_pathway_length(TestLinearPathway.test_2D_pathway_length   s\    47746688!34T$''1*%%||""h...r%   c                n   V P                   P                  V P                  ^V P                  ,          V P                  P
                  ,          4       ^\        V P                  ^,          4      ,          V P                  ,          V P                  ,          pV P                  P                  V8X  g   Q hR# r]   )
r'   r_   r&   rG   rF   r`   r   rL   rK   re   rj   s   & r   "test_2D_pathway_extension_velocity4TestLinearPathway.test_2D_pathway_extension_velocity   sn    47746688!34T$''1*%%dhh.tww6||..(:::r%   c                   V P                   P                  V P                  ^V P                  ,          V P                  P
                  ,          4       V P                  V P                  ) V P                  \        V P                  ^,          4      ,          ,          V P                  P
                  ,          3V P                   V P                  V P                  \        V P                  ^,          4      ,          ,          V P                  P
                  ,          3.pV P                  P                  V P                  4      V8X  g   Q hR# r]   )
r'   r_   r&   rG   rF   r`   rJ   r   rK   ri   rj   s   & r   test_2D_pathway_to_loads*TestLinearPathway.test_2D_pathway_to_loads   s    47746688!34WWh$twwz*: :;DFFHHDEWWdffdggTWWaZ(889$&&((BC
 ||$$TVV,888r%   c                Z   V P                   P                  V P                  V P                  V P                  P
                  ,          V P                  V P                  P                  ,          ,
          ^V P                  ,          V P                  P                  ,          ,           4       \        V P                  ^,          V P                  ^,          ,           ^V P                  ^,          ,          ,           4      p\        V P                  P                  V,
          4      ^ 8X  g   Q hR# r]   )r'   r_   r&   rG   rF   r`   rH   yrI   zr   r   rK   ra   rj   s   & r   test_3D_pathway_length(TestLinearPathway.test_3D_pathway_length   s    GGGGDFFHHtwwtvvxx//!DGG)DFFHH2DD	
 
TWWaZ/!DGGQJ,>?++h671<<<r%   c                T   V P                   P                  V P                  V P                  V P                  P
                  ,          V P                  V P                  P                  ,          ,
          ^V P                  ,          V P                  P                  ,          ,           4       \        V P                  ^,          V P                  ^,          ,           ^V P                  ^,          ,          ,           4      pV P                  V P                  ,          V,          V P                  V P                  ,          V,          ,           ^V P                  ,          V P                  ,          V,          ,           p\        V P                  P                   V,
          4      ^ 8X  g   Q hR# r]   )r'   r_   r&   rG   rF   r`   rH   rw   rI   rx   r   rL   rM   rN   r   rK   re   )r"   ra   rY   s   &  r   "test_3D_pathway_extension_velocity4TestLinearPathway.test_3D_pathway_extension_velocity   s   GGGGDFFHHtwwtvvxx//!DGG)DFFHH2DD	
 dggqj477A:-$''1*<=GGDHHV#ggdhhv%&i '( 	
 77(BCqHHHr%   c                   V P                   P                  V P                  V P                  V P                  P
                  ,          V P                  V P                  P                  ,          ,
          ^V P                  ,          V P                  P                  ,          ,           4       \        V P                  ^,          V P                  ^,          ,           ^V P                  ^,          ,          ,           4      pV P                  ) V P                  ,          V P                  P
                  ,          V,          V P                  V P                  ,          V P                  P                  ,          V,          ,           ^V P                  ,          V P                  ,          V P                  P                  ,          V,          ,
          pV P                  V P                  ,          V P                  P
                  ,          V,          V P                  V P                  ,          V P                  P                  ,          V,          ,
          ^V P                  ,          V P                  ,          V P                  P                  ,          V,          ,           pV P                  V3V P                   V3.pV P                  P                  V P                  4      V8X  g   Q hR# r]   )r'   r_   r&   rG   rF   r`   rH   rw   rI   rx   r   rJ   rK   ri   )r"   ra   pO_forcepI_forcerY   s   &    r   test_3D_pathway_to_loads*TestLinearPathway.test_3D_pathway_to_loads   s   GGGGDFFHHtwwtvvxx//!DGG)DFFHH2DD	
 dggqj477A:-$''1*<=ffHTWWTVVXX%f,ffTWWnTVVXX%f,-htwwtvvxx'./ 	 FF477N46688#F*ffTWWnTVVXX%f,-htwwtvvxx'./ 	 WWhWWh
 ||$$TVV,888r%   )rJ   rF   r&   r'   rK   rG   rL   rH   rM   rI   rN   )__name__
__module____qualname____firstlineno__r#   staticmethodr7   markparametrizer   r3   r<   rA   fixturerO   rT   rZ   rb   rf   rk   rn   rq   rt   ry   r|   r   __static_attributes____classdictcell____classdict__s   @r   r   r   $   sI    6 [[Dk5;',	
4 4 [[4[O4[%+uT{3	
, , [[5;4[$	
, , ^^D! "+)
(49/
;
9=I9 9r%   r   c                     a ] tR t^t oR t]]P                  P                  R^R U u. uF  p \        V 4      NK  	  up 3^R U u. uF  p \        V 4      NK  	  up 3^R U u. uF  p \        V 4      NK  	  up 3^R U u. uF  p \        V 4      NK  	  up 3.4      R 4       4       t
]]P                  P                  R]	! R4      .]	! R4      ]	! R4      ..4      R 4       4       t]]P                  P                  RR	]	! R4      ]	! R4      3]	! R4      R	]	! R4      3]	! R4      ]	! R4      R	3.4      R
 4       4       tR t]]P                  P                  RR U u. uF  p \        V 4      NK  	  up R3R U u. uF  p \        V 4      NK  	  up R3R U u. uF  p \        V 4      NK  	  up R3.4      R 4       4       t]P                  ! RR7      R 4       tR tR tR tR tR tR tRtVtR	# u up i u up i u up i u up i u up i u up i u up i )TestObstacleSetPathwayc                >    \        \        \        4      '       g   Q hR # r   )r    r
   r   r!   s   &r   r#   4TestObstacleSetPathway.test_is_pathway_base_subclass   s    ,k::::r%   znum_attachments, attachmentspOr&   pIc                    \        V!  p\        V\         4      '       g   Q h\        VR 4      '       g   Q h\        VP                  4      V 8X  g   Q hVP                   F  p\        V\
        4      '       d   K  Q h	  R# )r)   N)r
   r*   r+   r,   r)   r   )num_attachmentsr)   r2   
attachments   &&  r   r3   -TestObstacleSetPathway.test_valid_constructor   sq     &{3($67777x////8''(O;;;"..Jj%0000 /r%   r)   c                    \         P                  ! \        4      ;_uu_ 4        \        V !  pR R R 4       R #   + '       g   i     R # ; ir   )r7   r8   r9   r
   r:   s   & r   5test_invalid_constructor_attachments_incorrect_numberLTestObstacleSetPathway.test_invalid_constructor_attachments_incorrect_number   s,     ]]:&&"K0A '&&&r>   Nc                    \         P                  ! \        4      ;_uu_ 4        \        V !  pR R R 4       R #   + '       g   i     R # ; ir   r7   r8   r@   r   r:   s   & r   .test_invalid_constructor_attachments_not_pointETestObstacleSetPathway.test_invalid_constructor_attachments_not_point   s,     ]]9%%-A &%%%r>   c                   \        \        R 4      \        R4      \        R4      4      p\        P                  ! \        4      ;_uu_ 4        RVn        RRR4       \        P                  ! \        4      ;_uu_ 4        RVP
                  ^ &   RRR4       \        P                  ! \        4      ;_uu_ 4        RVP
                  ^&   RRR4       \        P                  ! \        4      ;_uu_ 4        RVP
                  R&   RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lr; i  + '       g   i     R# ; i)r   r&   r   N)r
   r   r7   r8   rR   r)   r@   r"   rK   s   & r   rT   4TestObstacleSetPathway.test_properties_are_immutable   s    $U4[%+uT{K]]>**"&G +]]9%%%)G" &]]9%%%)G" &]]9%%&*G# &% +*%%%%%%%s0   D=D7D11ED	D.	1E	E	zattachments, expectedzObstacleSetPathway(pO, pA, pI)z"ObstacleSetPathway(pO, pA, pB, pI)z&ObstacleSetPathway(pO, pA, pB, pC, pI)c                <    \        V !  p\        V4      V8X  g   Q hR # r   )r
   rW   )r)   rY   rK   s   && r   rZ    TestObstacleSetPathway.test_repr   s     & %k2G}(((r%   TrC   c                   \        R 4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R4      V n        \        R^4      V n	        \        R4      V n        R# )rF   r   r   r&   r'   qrJ   N)r   rF   r   r   r   r&   r'   r   r   qdr   rJ   r!   s   &r   _obstacle_set_pathway_fixture4TestObstacleSetPathway._obstacle_set_pathway_fixture  s_    $++++$ a(r%   c                "   V P                   P                  V P                  V P                  P                  4       V P
                  P                  V P                  V P                  P                  4       V P                  P                  V P                  V P                  P                  4       \        V P                  V P                   V P
                  V P                  4      pVP                  ^^\        ^4      ,          ,           8X  g   Q hR#    N)r&   r_   r   rF   r`   r'   rw   r   rx   r
   ra   r   r   s   & r   rb   1TestObstacleSetPathway.test_static_pathway_length  s    ***$TWWdggtwwH~~Qa[000r%   c                   V P                   P                  V P                  V P                  P                  4       V P
                  P                  V P                  V P                  P                  4       V P                  P                  V P                  V P                  P                  4       \        V P                  V P                   V P
                  V P                  4      pVP                  ^ 8X  g   Q hR#     N)r&   r_   r   rF   r`   r'   rw   r   rx   r
   re   r   s   & r   rf   =TestObstacleSetPathway.test_static_pathway_extension_velocity  s    ***$TWWdggtwwH))Q...r%   c                `   V P                   P                  V P                  V P                  P                  4       V P
                  P                  V P                  V P                  P                  4       V P                  P                  V P                  V P                  P                  4       \        V P                  V P                   V P
                  V P                  4      p\        V P                  V P                  ) V P                  P                  ,          4      \        V P                   V P                  V P                  P                  ,          4      \        V P                   V P                  \        ^4      ,          ^,          V P                  P                  V P                  P                  ,
          ,          4      \        V P
                  V P                  \        ^4      ,          ^,          V P                  P                  V P                  P                  ,
          ,          4      \        V P
                  V P                  \        ^4      ,          ^,          V P                  P                  V P                  P                  ,
          ,          4      \        V P                  V P                  \        ^4      ,          ^,          V P                  P                  V P                  P                  ,
          ,          4      .pVP                  V P                  4      V8X  g   Q hR# r]   )r&   r_   r   rF   r`   r'   rw   r   rx   r
   r   rJ   r   ri   rX   s   &  r   rk   3TestObstacleSetPathway.test_static_pathway_to_loads&  s   ***$TWWdggtwwH$''DFF7TVVXX-.$''466DFFHH,-$''466DG+a/46688dffhh3FGH$''466DG+a/46688dffhh3FGH$''466DG+a/46688dffhh3FGH$''466DG+a/46688dffhh3FGH
 '8333r%   c                4   V P                   P                  V P                  V P                  P                  V P                  P
                  ,           ) 4       V P                  P                  V P                  \        V P                  4      V P                  P                  ,          \        V P                  4      ^,           V P                  P
                  ,          ,
          4       V P                  P                  V P                  \        V P                  4      V P                  P                  ,          \        V P                  4      ^,
          V P                  P
                  ,          ,           4       \        V P                  V P                   V P                  V P                  4      p^\        ^4      ,          \        ^^\        V P                  4      ,          ,           4      ,           pVP                  V,
          P                  4       ^ 8X  g   Q hR# r   )r&   r_   r   rF   r`   rw   r'   r   r   r   r   r
   r   ra   r   rX   s   &  r   rn   -TestObstacleSetPathway.test_2D_pathway_length5  s4   46688dffhh#6!78GGS[46688+s466{Q$&&((.JJ	
 	GGS[46688+s466{Q$&&((.JJ	
 %TWWdggtwwHtAw;a!CK-&7!88)335:::r%   c                ~   V P                   P                  V P                  V P                  P                  V P                  P
                  ,           ) 4       V P                  P                  V P                  \        V P                  4      V P                  P                  ,          \        V P                  4      ^,           V P                  P
                  ,          ,
          4       V P                  P                  V P                  \        V P                  4      V P                  P                  ,          \        V P                  4      ^,
          V P                  P
                  ,          ,           4       \        V P                  V P                   V P                  V P                  4      p\        ^4      \        V P                  4      ,          V P                  ,          ) ^\        \        V P                  4      ^,           4      ,          ,          pVP                  V,
          P                  4       ^ 8X  g   Q hR# r   )r&   r_   r   rF   r`   rw   r'   r   r   r   r   r
   r   r   re   r   rX   s   &  r   rq   9TestObstacleSetPathway.test_2D_pathway_extension_velocityA  sL   46688dffhh#6!78GGS[46688+s466{Q$&&((.JJ	
 	GGS[46688+s466{Q$&&((.JJ	
 %TWWdggtwwH1gDFF+dgg56!d3tvv;QR?>S:ST**X5??AQFFFr%   c           
        V P                   P                  V P                  V P                  P                  V P                  P
                  ,           ) 4       V P                  P                  V P                  \        V P                  4      V P                  P                  ,          \        V P                  4      ^,           V P                  P
                  ,          ,
          4       V P                  P                  V P                  \        V P                  4      V P                  P                  ,          \        V P                  4      ^,
          V P                  P
                  ,          ,           4       \        V P                  V P                   V P                  V P                  4      p\        ^4      ^,          V P                  P                  V P                  P
                  ,           ,          p\        ^\        V P                  4      ,          ^,           4      ) ^,          V P                  P                  ,          \        ^4      \        V P                  4      ,          ^\        \        V P                  4      ^,           4      ,          ,          V P                  P
                  ,          ,           p\        V P                  \        ^,          ,           4      V P                  P                  ,          \        V P                  \        ^,          ,           4      V P                  P
                  ,          ,
          p\        V P                  V P                  V,          4      \        V P                   V P                  ) V,          4      \        V P                   V P                  V,          4      \        V P                  V P                  ) V,          4      \        V P                  V P                  V,          4      \        V P                  V P                  ) V,          4      .p\!        VP#                  V P                  4      4      V8X  g   Q hR# r   )r&   r_   r   rF   r`   rw   r'   r   r   r   r   r
   r   r   r   rJ   r   ri   )r"   rK   pO_pA_force_vecpA_pB_force_vecpB_pI_force_vecrY   s   &     r   rt   /TestObstacleSetPathway.test_2D_pathway_to_loadsM  s   46688dffhh#6!78GGS[46688+s466{Q$&&((.JJ	
 	GGS[46688+s466{Q$&&((.JJ	
 %TWWdggtwwHq'A+DFFHH)<=1s466{?Q&''!+dffhh61gDFF#q4DFFa+@'@ADFFHHLM 	 dffr!tm,tvvxx7#dffr!tm:Ltvvxx:WW$''466O34$''DFF7_45$''466O34$''DFF7_45$''466O34$''DFF7_45
 w//78HDDDr%   )rJ   rF   r&   r'   r   r   r   r   )r   r&   r   )r   r&   r'   r   )r   r&   r'   pCr   )r   r&   r'   r   pDr   )r   r   r   r   r#   r   r7   r   r   r   r3   r   r   rT   rZ   r   r   rb   rf   rk   rn   rq   rt   r   r   )r-   r   s   0@r   r   r      sk    ; [[&);<);t);<=)AB)At)ABC)GH)Gt)GHI)MN)Mt)MNO		
1 1 [[
+teDk231	 
1 [[5;d,4[$d,4[%+t,	
. .	+ [[ *<<);t);<0
 *BB)At)AB4
 *HH)Gt)GH8	
")# $) ^^D! "1/4
;
GE EK =BHNb = C Is)   G(G-!G2=G7G<3HHr   c                     a  ] tR tRt o R t]P                  ! RR7      R 4       tR t]P                  P                  R]! R4      3]! R4      ]! R	4      ]! R
4      3.4      R 4       t]]P                  P                  RR]! R	4      3]! R4      R3.4      R 4       4       tR t]P                  P                  R]! R4      ]! R4      ]! R4      ]! R4      P&                  .4      R 4       tR tR tR t]R 4       t]P                  P                  RR%R&]^,          3R&]! ^4      ^,          ]! ^4      ) ^,          ^ 3^],          ^,          3R%]! ^^4      ]! ^4      ^,          ^ 3]^,          3.4      R 4       t]P                  P                  RR%R&]! ^^4      ],          3R%R(]3R(R%]3R&]! ^4      ^,          ]! ^4      ) ^,          ^ 3^],          ^,          3R%]! ^^4      ]! ^4      ^,          ^ 3]^,          3R&]! ^4      ]! ^^4      ,          ]! ^4      ) ]! ^^4      ,          ^3]! ^]! ^^4      ],          ^,          ,           4      3R%]! ^^4      ]! ^4      ]! ^^4      ,          ^3]! ^]! ^^4      ],          ^,          ,           4      3.4      R 4       t]P                  P                  RR)R&]! ^4      ]! ^^4      ,          ]! ^4      ) ]! ^^4      ,          ^ 33R%]! ^^4      ]! ^4      ]! ^^4      ,          ^ 33.4      R 4       t]P                  P                  RR)R*R+R&]! ^4      ^,          ]! ^4      ) ^,          ^ 33R%]! ^^4      ]! ^4      ^,          ^ 33R&]! ^4      ]! ^^4      ,          ]! ^4      ) ^,          ^33R%]! ^^4      ]! ^4      ^,          ^33.4      R 4       t]P                  P                  RR,R&]! ^4      ^,          ]! ^4      ) ^,          ^ 3R%]! ^4      ^,          ]! ^4      ^,          ^ 3R']! ^4      ^,          ,
          ]! ^4      ) ^,          ^ 33R%]! ^^4      ]! ^4      ^,          ^ 3R&]! ^4      ^,          ]! ^^4      ) ^ 3]! ^4      ) ^,          ]! ^^4      ^,
          ^ 3334      R 4       t ]P                  P                  RR,R-R.R&]! ^4      ^,          ]! ^4      ) ^,          ^ 3R(]! ^4      ) ^,          ]! ^4      ) ^,          ^ 3^]! ^4      ^,          ,           ]! ^4      ^,          ^ 33R%]! ^^4      ]! ^4      ^,          ^ 3R&]! ^4      ^,          ]! ^^4      ) ^ 3]! ^4      ) ^,          ]! ^^4      ^,
          ^ 33R%]! ^4      ^,          ]! ^4      ^,          ^ 3R&]! ^4      ^,          ]! ^4      ) ^,          ^ 3]! ^4      ) ^,          ]! ^4      ^,          ^,
          ^ 33R/R&]! ^4      ^,          ]! ^4      ) ^,          ^3R0],          ]! ^^]^,          ,          ,           4      ,          ^ ^]! ^^]^,          ,          ,           4      ,          3R0]! ^4      ,          ],          ^]! ^^]^,          ,          ,           4      ,          ,          R0]! ^4      ,          ],          ^]! ^^]^,          ,          ,           4      ,          ,          R1]! ^^]^,          ,          ,           4      ,          3^]! ^4      ^,           ,          ],          ^]! ^^]^,          ,          ,           4      ,          ,          ^]! ^4      ,          ],          ^]! ^^]^,          ,          ,           4      ,          ,          ^ 3334      R  4       t!R! t"R" t#R# t$R$t%V t&R# )2TestWrappingPathwayig  c                >    \        \        \        4      '       g   Q hR # r   )r    r   r   r!   s   &r   r#   1TestWrappingPathway.test_is_pathway_base_subclassi  s    /;7777r%   TrC   c                
   \        R 4      V n        \        R4      V n        \        RRR7      V n        \        R4      V n        \        R4      V n        V P                  P                  V n	        \        V P                  V P
                  4      V n        \        V P                  V P
                  V P                  4      V n        \        V P                  V P                  V P                  4      V n        \        R4      V n        R# )	r&   r'   rT)positiver   rF   rJ   N)r   r&   r'   r   r   r   r   rF   rx   axr   spherer   cylinderr   rK   rJ   r!   s   &r   _wrapping_pathway_fixture-TestWrappingPathway._wrapping_pathway_fixturel  s    ++d++$&&(($TVVTWW5($''B&twwGr%   c                   \        V P                  V P                  V P                  4      p\	        V\         4      '       g   Q h\        VR 4      '       g   Q h\        VP                  4      ^8X  g   Q h\	        VP                  ^ ,          \        4      '       g   Q hVP                  ^ ,          V P                  8X  g   Q h\	        VP                  ^,          \        4      '       g   Q hVP                  ^,          V P                  8X  g   Q h\        VR4      '       g   Q h\	        VP                  \        4      '       g   Q hVP                  V P                  8X  g   Q hR# )r)   geometryN)r   r&   r'   r   r*   r+   r,   r)   r   r   r   rS   s   & r   r3   *TestWrappingPathway.test_valid_constructory  s   "477DGGT]]C(O4444x////8''(A---(..q159999##A&$''111(..q159999##A&$''111x,,,,(++-ABBBB  DMM111r%   r)   r&   r'   r5   c                    \         P                  ! \        4      ;_uu_ 4        \        . VOV P                  N5!  pR R R 4       R #   + '       g   i     R # ; ir   )r7   r8   r@   r   r   )r"   r)   r;   s   && r   r   ITestWrappingPathway.test_invalid_constructor_attachments_incorrect_number  s8     ]]9%%<<dmm<A &%%%s   AA	Nc                    \         P                  ! \        4      ;_uu_ 4        \        V !  pR R R 4       R #   + '       g   i     R # ; ir   r   r:   s   & r   r   BTestWrappingPathway.test_invalid_constructor_attachments_not_point  s,     ]]9%%-A &%%%r>   c                    \         P                  ! \        4      ;_uu_ 4        \        V P                  V P
                  4      pR R R 4       R #   + '       g   i     R # ; ir   r7   r8   r@   r   r&   r'   )r"   r;   s   & r   1test_invalid_constructor_geometry_is_not_suppliedETestWrappingPathway.test_invalid_constructor_geometry_is_not_supplied  s4    ]]9%%1A &%%%s   !AA	r   r   r   rF   c                    \         P                  ! \        4      ;_uu_ 4        \        V P                  V P
                  V4      pR R R 4       R #   + '       g   i     R # ; ir   r   )r"   r   r;   s   && r   "test_invalid_geometry_not_geometry6TestWrappingPathway.test_invalid_geometry_not_geometry  s8     ]]9%%(;A &%%%s   "AA 	c                   \         P                  ! \        4      ;_uu_ 4        V P                  V P                  P
                  ^ &   RRR4       \         P                  ! \        4      ;_uu_ 4        V P                  V P                  P
                  ^&   RRR4       R#   + '       g   i     L`; i  + '       g   i     R# ; ir   )r7   r8   r@   r'   rK   r)   r&   r!   s   &r   &test_attachments_property_is_immutable:TestWrappingPathway.test_attachments_property_is_immutable  sp    ]]9%%*.''DLL$$Q' &]]9%%*.''DLL$$Q' &% &%%%%s   $B1$B2B/	2C	c                    \         P                  ! \        4      ;_uu_ 4        R V P                  n        R R R 4       R #   + '       g   i     R # ; ir   )r7   r8   rR   rK   r   r!   s   &r   #test_geometry_property_is_immutable7TestWrappingPathway.test_geometry_property_is_immutable  s,    ]]>**$(DLL! +***s	   ?A	c                `    R V P                   : R2p\        V P                  4      V8X  g   Q hR# )z!WrappingPathway(pA, pB, geometry=)N)r   rW   rK   rj   s   & r   rZ   TestWrappingPathway.test_repr  s6    (+ 	 DLL!X---r%   c                8    \        R  \        W4       4       4      # )c              3   6   "   T F  w  rW,          x  K  	  R # 5ir    .0magunits   &  r   	<genexpr>9TestWrappingPathway._expand_pos_to_vec.<locals>.<genexpr>  s     ?388   )sumzip)posframes   &&r   _expand_pos_to_vec&TestWrappingPathway._expand_pos_to_vec  s    ?s3???r%   zpA_vec, pB_vec, factorc                   V P                  WP                  4      pV P                  W P                  4      pV P                  P                  V P                  V P
                  V,          4       V P                  P                  V P                  V P
                  V,          4       \        V P                  V P                  V P                  4      pW0P
                  ,          p\        VP                  V,
          4      ^ 8X  g   Q hR# r   )r   rF   r&   r_   r   r   r'   r   r   r   ra   r"   pA_vecpB_vecfactorrK   rY   s   &&&&  r   $test_static_pathway_on_sphere_length8TestWrappingPathway.test_static_pathway_on_sphere_length  s     ((8((8//!$''477DKK@&&=12a777r%   c                0   V P                  WP                  4      pV P                  W P                  4      pV P                  P                  V P                  V P
                  V,          4       V P                  P                  V P                  V P
                  V,          4       \        V P                  V P                  V P                  4      pV\        V P
                  ^,          4      ,          p\        VP                  V,
          4      ^ 8X  g   Q hR# r]   )r   rF   r&   r_   r   r   r'   r   r   r   r   ra   r   s   &&&&  r   &test_static_pathway_on_cylinder_length:TestWrappingPathway.test_static_pathway_on_cylinder_length  s    * ((8((8//!$''477DMMB$tvvqy/)12a777r%   zpA_vec, pB_vecc                   V P                  WP                  4      pV P                  W P                  4      pV P                  P                  V P                  V P
                  V,          4       V P                  P                  V P                  V P
                  V,          4       \        V P                  V P                  V P                  4      pVP                  ^ 8X  g   Q hR# r   )
r   rF   r&   r_   r   r   r'   r   r   re   r"   r   r   rK   s   &&& r   0test_static_pathway_on_sphere_extension_velocityDTestWrappingPathway.test_static_pathway_on_sphere_extension_velocity  s     ((8((8//!$''477DKK@))Q...r%   c                   V P                  WP                  4      pV P                  W P                  4      pV P                  P                  V P                  V P
                  V,          4       V P                  P                  V P                  V P
                  V,          4       \        V P                  V P                  V P                  4      pVP                  ^ 8X  g   Q hR# r   )
r   rF   r&   r_   r   r   r'   r   r   re   r   s   &&& r   2test_static_pathway_on_cylinder_extension_velocityFTestWrappingPathway.test_static_pathway_on_cylinder_extension_velocity  s     ((8((8//!$''477DMMB))Q...r%   zApA_vec, pB_vec, pA_vec_expected, pB_vec_expected, pO_vec_expectedc                   V P                  WP                  4      pV P                  W P                  4      pV P                  P                  V P                  V P
                  V,          4       V P                  P                  V P                  V P
                  V,          4       \        V P                  V P                  V P                  4      p\        R  \        W0P                  4       4       4      p\        R \        W@P                  4       4       4      p\        R \        WPP                  4       4       4      p\        V P                  V P                  V P
                  ^,          \        V P
                  ^,          4      ,          ,          V,          4      \        V P                  V P                  V P
                  ^,          \        V P
                  ^,          4      ,          ,          V,          4      \        V P                  V P                  V P
                  ^,          \        V P
                  ^,          4      ,          ,          V,          4      .pVP                  V P                  4      V8X  g   Q hR# )c              3   6   "   T F  w  rW,          x  K  	  R # 5ir   r   r   s   &  r   r   MTestWrappingPathway.test_static_pathway_on_sphere_to_loads.<locals>.<genexpr>7        
(D#CHH(Dr   c              3   6   "   T F  w  rW,          x  K  	  R # 5ir   r   r   s   &  r   r   r  :  r  r   c              3   6   "   T F  w  rW,          x  K  	  R # 5ir   r   r   s   &  r   r   r  =  r  r   N)r   rF   r&   r_   r   r   r'   r   r   r   r   r   rJ   r   ri   )r"   r   r   pA_vec_expectedpB_vec_expectedpO_vec_expectedrK   rY   s   &&&&&&  r   &test_static_pathway_on_sphere_to_loads:TestWrappingPathway.test_static_pathway_on_sphere_to_loads  s   8 ((8((8//!$''477DKK@ 
(+OVV(D
 
  
(+OVV(D
 
  
(+OVV(D
 
 $''46646619T$&&!)_#<=oMN$''46646619T$&&!)_#<=oMN$''46646619T$&&!)_#<=oMN

 '8333r%   c                   V P                  WP                  4      pV P                  W P                  4      pV P                  P                  V P                  V P
                  V,          4       V P                  P                  V P                  V P
                  V,          4       \        V P                  V P                  V P                  4      pV P                  V P                  VV P                  4      ,          pV P                  V P                  VV P                  4      ,          pV P                  V P                  VV P                  4      ,          p	\        V P                  V4      \        V P                  V4      \        V P                  V	4      .p
\        VP                  V P                  4      4      V
8X  g   Q hR # r   )r   rF   r&   r_   r   r   r'   r   r   rJ   r   r   ri   )r"   r   r   r
  r  r  rK   pA_force_expectedpB_force_expectedpO_force_expectedrY   s   &&&&&&     r   (test_static_pathway_on_cylinder_to_loads<TestWrappingPathway.test_static_pathway_on_cylinder_to_loadsG  sR   j ((8((8//!$''477DMMB FF4#:#:?;?66$C C FF4#:#:?;?66$C C FF4#:#:?;?66$C C $'',-$'',-$'',-

 w//78HDDDr%   c                f   \        R 4      pV P                  V P                  P                  ,          pV P                  \	        V4      V P                  P                  ,          \        V4      V P                  P                  ,          ,           ,          pV P                  P                  V P                  V4       V P                  P                  V P                  V4       V P                  \        V^,          4      ,          p\        V P                  P                  V,
          4      ^ 8X  g   Q hR# r   N)r   r   rF   r`   r   r   rw   r&   r_   r   r'   r   r   rK   ra   )r"   r   pA_pospB_posrY   s   &    r   "test_2D_pathway_on_cylinder_length6TestWrappingPathway.test_2D_pathway_on_cylinder_length  s    3Q3q6$&&((?:;((66$q!t*$++h671<<<r%   c                   \        R 4      p\        R ^4      pV P                  V P                  P                  ,          pV P                  \	        V4      V P                  P                  ,          \        V4      V P                  P                  ,          ,           ,          pV P                  P                  V P                  V4       V P                  P                  V P                  V4       V P                  \        V^,          4      V,          ,          V,          p\        V P                  P                  V,
          4      ^ 8X  g   Q hR# r  )r   r   rF   r`   r   r   rw   r&   r_   r   r'   r   r   rK   re   )r"   r   r   r  r  rY   s   &     r   .test_2D_pathway_on_cylinder_extension_velocityBTestWrappingPathway.test_2D_pathway_on_cylinder_extension_velocity  s    3C#Q3q6$&&((?:;((6641:a<(+77(BCqHHHr%   c                   \        R 4      pV P                  V P                  P                  ,          pV P                  \	        V4      V P                  P                  ,          \        V4      V P                  P                  ,          ,           ,          pV P                  P                  V P                  V4       V P                  P                  V P                  V4       V P                  V P                  P                  ,          pV P                  \        V4      V P                  P                  ,          \	        V4      V P                  P                  ,          ,
          ,          pV P                  \        V4      ) V P                  P                  ,          \	        V4      ^,
          V P                  P                  ,          ,           ,          p\        V P                  V4      \        V P                  V4      \        V P                  V4      .p\        V P                  P                  V P                  4      4      pW8X  g   Q hR# r  )r   r   rF   r`   r   r   rw   r&   r_   r   r'   rJ   r   r   rK   ri   )	r"   r   r  r  pA_forcepB_forcer   rY   r   s	   &        r   $test_2D_pathway_on_cylinder_to_loads8TestWrappingPathway.test_2D_pathway_on_cylinder_to_loads  s_   3Q3q6$&&((?:;((66$&&((?663q6$&&((?SVDFFHH_<=66CF746688+s1vz46688.CCD$''8$$''8$$''8$
   5 5dff =>   r%   )
rJ   rF   r   r   r&   r'   r   rK   r   r   r   r   r   r   r   r   r   r   r   r   )r#  r$  )r#  r%  )r%  r#  )r#  r$  r$  r#  )r   r   r   )r#  r%  r$  r$  )r   r   )r%  r#  r   r   r   r'  )r   r^   r   )r$  )r   r   r   )r   r   r   )r   r   r   )r   r   r   )'r   r   r   r   r#   r7   r   r   r3   r   r   r   r   r   r   r   r   r   r   r`   r   r   r   rZ   r   r   r   r   r   r   r   r  r  r  r  r  r!  r   r   r   s   @r   r   r   g  s    8 ^^D!
 "
2 [[4[O4[%+uT{3	
== [[5;4[$	
. .2 [[3K333!!		
<<2). @ @ [[ 	2a4(aT!WHQJ2AbDF;!QaA61=	
88 [[ 	8Aq>"#45
B'B'aT!WHQJ2AbDF;!QaA61=a!Q'$q'(1a.)@!DQ(1a.+a//0 !Qa!Q!7;Q(1a.+a//0	
(8)(8 [["a!Q/$q'(1a.1H!LM!Qa!Q)?CD	
// [["##aT!WHQJ23!QaA67a!Q/$q'!Q?@!QaA67	
// [[KEaT!WHQJ*aDGAIq)d1gai$q'!Q/ !QaA.aXa^OQ/q'!Xa^a/3	
(4)(4< [[KEEFaT!WHQJ*q'!d1gXaZ+T!WQYQ	1- !QaA.aXa^OQ/q'!Xa^a/3 aDGAIq)aT!WHQJ*q'!T!WQY]A. EaT!WHQJ*BtBBEM**Aqb2b!e8m1D/DEtAwJrM1T"r"a%x-%8#89tAwJrM1T"r"a%x-%8#89tBBEM** tAw{OB&$rBr1uH}*=(=>d1gIbL!DbQh$7"785)	
,ZE[,ZE6=I! !r%   r   )__doc__r7   sympyr   r   r   r   r   r   sympy.physics.mechanicsr   r	   r
   r   r   r   r   r   r   r   r   sympy.simplify.simplifyr   r   r   r   r   r   r%   r   <module>r.     s[    B      -X9 X9veE eEPL! L!r%   