§
    OŠtjpa  ã                   óÆ   — d Z ddlZddlmZmZmZmZmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZ ddlmZ d„ Z G d„ d¦  «        Z G d	„ d
¦  «        Z G d„ d¦  «        ZdS )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                 ó   — d„ | D ¦   «         S )Nc                 ór   — g | ]4}|                      |j        |j                             ¦   «         ¦  «        ‘Œ5S © )Ú	__class__ÚlocationÚvectorr   )Ú.0Úloads     úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/mechanics/tests/test_pathway.pyú
<listcomp>z#_simplify_loads.<locals>.<listcomp>   sF   € ð ð ð àð 	�Š�t”} d¤k×&:Ò&:Ñ&<Ô&<Ñ=Ô=ðð ð ó    r   )Úloadss    r   Ú_simplify_loadsr!      s#   € ðð àðñ ô ð r   c            
       óD  — e Zd Zd„ Zeej                             d ed¦  «         ed¦  «        fi fg¦  «        d„ ¦   «         ¦   «         Z	eej                             d ed¦  «        f ed¦  «         ed¦  «         ed¦  «        fg¦  «        d„ ¦   «         ¦   «         Z
eej                             dd	 ed¦  «        f ed¦  «        d	fg¦  «        d
„ ¦   «         ¦   «         Z ej        d¬¦  «        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	S )ÚTestLinearPathwayc                 ó>   — t          t          t          ¦  «        sJ ‚d S ©N)Ú
issubclassr
   r   ©Úselfs    r   Útest_is_pathway_base_subclassz/TestLinearPathway.test_is_pathway_base_subclass&   s   € Ý�-­Ñ5Ô5Ð5Ð5Ð5Ð5Ð5r   zargs, kwargsÚpAÚpBc                 óÚ  — | \  }}t          | i |¤Ž}t          |t           ¦  «        sJ ‚t          |d¦  «        sJ ‚t          |j        ¦  «        dk    sJ ‚|j        d         |u sJ ‚|j        d         |u sJ ‚t          |j        d         t
          ¦  «        sJ ‚|j        d         j        dk    sJ ‚t          |j        d         t
          ¦  «        sJ ‚|j        d         j        dk    sJ ‚d S )NÚattachmentsé   r   é   r*   r+   )r
   Ú
isinstanceÚhasattrÚlenr-   r   Úname)ÚargsÚkwargsÚpointAÚpointBÚinstances        r   Útest_valid_constructorz(TestLinearPathway.test_valid_constructor)   s  € ð ‰ˆ�Ý  $Ð1¨&Ð1Ð1ˆÝ˜(¥MÑ2Ô2Ð2Ð2Ð2Ý�x Ñ/Ô/Ð/Ð/Ð/Ý�8Ô'Ñ(Ô(¨AÒ-Ð-Ð-Ð-ØÔ# AÔ&¨&Ð0Ð0Ð0Ð0ØÔ# AÔ&¨&Ð0Ð0Ð0Ð0Ý˜(Ô.¨qÔ1µ5Ñ9Ô9Ð9Ð9Ð9ØÔ# AÔ&Ô+¨tÒ3Ð3Ð3Ð3Ý˜(Ô.¨qÔ1µ5Ñ9Ô9Ð9Ð9Ð9ØÔ# AÔ&Ô+¨tÒ3Ð3Ð3Ð3Ð3Ð3r   r-   ÚpZc                 ó|   — t          j        t          ¦  «        5  t          | Ž }d d d ¦  «         d S # 1 swxY w Y   d S r%   )ÚpytestÚraisesÚ
ValueErrorr
   ©r-   Ú_s     r   Ú)test_invalid_attachments_incorrect_numberz;TestLinearPathway.test_invalid_attachments_incorrect_number=   s‚   € õ Œ]�:Ñ&Ô&ð 	,ð 	,Ý˜{Ð+ˆAð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ó   š
1±5¸5Nc                 ó|   — t          j        t          ¦  «        5  t          | Ž }d d d ¦  «         d S # 1 swxY w Y   d S r%   )r<   r=   Ú	TypeErrorr
   r?   s     r   Ú"test_invalid_attachments_not_pointz4TestLinearPathway.test_invalid_attachments_not_pointI   s‚   € õ Œ]�9Ñ%Ô%ð 	,ð 	,Ý˜{Ð+ˆAð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,rB   T©Úautousec                 óÚ  — t          d¦  «        | _        t          d¦  «        | _        t          d¦  «        | _        t          | j        | j        ¦  «        | _        t          d¦  «        | _        t          d¦  «        | _	        t          d¦  «        | _
        t          dd¦  «        | _        t          dd¦  «        | _        t          dd¦  «        | _        t          d¦  «        | _        d S )	NÚNr*   r+   Úq1Úq2Úq3r/   ÚF)r   rI   r   r*   r+   r
   Úpathwayr   rJ   rK   rL   Úq1dÚq2dÚq3dr   rM   r'   s    r   Ú_linear_pathway_fixturez)TestLinearPathway._linear_pathway_fixtureU   s±   € å Ñ$Ô$ˆŒÝ˜‘+”+ˆŒÝ˜‘+”+ˆŒÝ$ T¤W¨d¬gÑ6Ô6ˆŒÝ  Ñ&Ô&ˆŒÝ  Ñ&Ô&ˆŒÝ  Ñ&Ô&ˆŒÝ! $¨Ñ*Ô*ˆŒÝ! $¨Ñ*Ô*ˆŒÝ! $¨Ñ*Ô*ˆŒÝ˜‘”ˆŒˆˆr   c                 ó˜  — t          | j        | j        ¦  «        }t          j        t
          ¦  «        5  d |_        d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  d |j        d<   d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  d |j        d<   d d d ¦  «         d S # 1 swxY w Y   d S ©Nr   r/   )r
   r*   r+   r<   r=   ÚAttributeErrorr-   rD   ©r(   r8   s     r   Útest_properties_are_immutablez/TestLinearPathway.test_properties_are_immutablec   su  € Ý  ¤¨$¬'Ñ2Ô2ˆÝŒ]�>Ñ*Ô*ð 	(ð 	(Ø#'ˆHÔ ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(åŒ]�9Ñ%Ô%ð 	+ð 	+Ø&*ˆHÔ  Ñ#ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+åŒ]�9Ñ%Ô%ð 	+ð 	+Ø&*ˆHÔ  Ñ#ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s5   ´AÁAÁAÁ,BÂBÂ
BÂ'B?Â?CÃCc                 óh   — t          | j        | j        ¦  «        }d}t          |¦  «        |k    sJ ‚d S )NzLinearPathway(pA, pB))r
   r*   r+   Úrepr©r(   rN   Úexpecteds      r   Ú	test_reprzTestLinearPathway.test_reprl   s7   € Ý ¤¨¬Ñ1Ô1ˆØ*ˆÝ�G‰}Œ} Ò(Ð(Ð(Ð(Ð(Ð(r   c                 ó„   — | j                              | j        d| j        j        z  ¦  «         | j        j        dk    sJ ‚d S ©Nr.   )r+   Úset_posr*   rI   ÚxrN   Úlengthr'   s    r   Útest_static_pathway_lengthz,TestLinearPathway.test_static_pathway_lengthq   s>   € ØŒ�Š˜œ  4¤6¤8¡Ñ,Ô,Ð,ØŒ|Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r   c                 ó„   — | j                              | j        d| j        j        z  ¦  «         | j        j        dk    sJ ‚d S ©Nr.   r   )r+   r_   r*   rI   r`   rN   Úextension_velocityr'   s    r   Ú&test_static_pathway_extension_velocityz8TestLinearPathway.test_static_pathway_extension_velocityu   s>   € ØŒ�Š˜œ  4¤6¤8¡Ñ,Ô,Ð,ØŒ|Ô.°!Ò3Ð3Ð3Ð3Ð3Ð3r   c                 ó  — | j                              | j        d| j        j        z  ¦  «         | j        | j         | j        j        z  f| j         | j        | j        j        z  fg}| j                             | j        ¦  «        |k    sJ ‚d S r^   )r+   r_   r*   rI   r`   rM   rN   Úto_loads©r(   r[   s     r   Útest_static_pathway_to_loadsz.TestLinearPathway.test_static_pathway_to_loadsy   s   € ØŒ�Š˜œ  4¤6¤8¡Ñ,Ô,Ð,àŒW˜œ�h˜tœvœxÑ'Ð(ØŒW�d”f˜TœVœX‘oÐ&ð
ˆð Œ|×$Ò$ T¤VÑ,Ô,°Ò8Ð8Ð8Ð8Ð8Ð8r   c                 óÈ   — | j                              | j        d| j        z  | j        j        z  ¦  «         dt          | j        dz  ¦  «        z  }| j        j        |k    sJ ‚d S r^   )	r+   r_   r*   rJ   rI   r`   r   rN   ra   ri   s     r   Útest_2D_pathway_lengthz(TestLinearPathway.test_2D_pathway_length�   s]   € ØŒ�Š˜œ  4¤7¡¨4¬6¬8Ñ!3Ñ4Ô4Ð4Ø•T˜$œ' 1™*Ñ%Ô%Ñ%ˆØŒ|Ô" hÒ.Ð.Ð.Ð.Ð.Ð.r   c                 óè   — | j                              | j        d| j        z  | j        j        z  ¦  «         dt          | j        dz  ¦  «        z  | j        z  | j        z  }| j        j	        |k    sJ ‚d S r^   )
r+   r_   r*   rJ   rI   r`   r   rO   rN   re   ri   s     r   Ú"test_2D_pathway_extension_velocityz4TestLinearPathway.test_2D_pathway_extension_velocity†   sk   € ØŒ�Š˜œ  4¤7¡¨4¬6¬8Ñ!3Ñ4Ô4Ð4Ø•T˜$œ' 1™*Ñ%Ô%Ñ% d¤hÑ.¨t¬wÑ6ˆØŒ|Ô.°(Ò:Ð:Ð:Ð:Ð:Ð:r   c                 ó¨  — | j                              | j        d| j        z  | j        j        z  ¦  «         | j        | j         | j        t          | j        dz  ¦  «        z  z  | j        j        z  f| j         | j        | j        t          | j        dz  ¦  «        z  z  | j        j        z  fg}| j         	                    | j        ¦  «        |k    sJ ‚d S r^   )
r+   r_   r*   rJ   rI   r`   rM   r   rN   rh   ri   s     r   Útest_2D_pathway_to_loadsz*TestLinearPathway.test_2D_pathway_to_loads‹   s»   € ØŒ�Š˜œ  4¤7¡¨4¬6¬8Ñ!3Ñ4Ô4Ð4àŒW˜œ�h ¤­$¨t¬w¸©zÑ*:Ô*:Ñ :Ñ;¸D¼F¼HÑDÐEØŒW�d”f˜dœg­¨T¬W°a©ZÑ(8Ô(8Ñ8Ñ9¸$¼&¼(ÑBÐCð
ˆð Œ|×$Ò$ T¤VÑ,Ô,°Ò8Ð8Ð8Ð8Ð8Ð8r   c                 óh  — | j                              | j        | j        | j        j        z  | j        | j        j        z  z
  d| j        z  | j        j	        z  z   ¦  «         t          | j        dz  | j        dz  z   d| j        dz  z  z   ¦  «        }t          | j        j        |z
  ¦  «        dk    sJ ‚d S ©Nr.   é   r   )r+   r_   r*   rJ   rI   r`   rK   ÚyrL   Úzr   r   rN   ra   ri   s     r   Útest_3D_pathway_lengthz(TestLinearPathway.test_3D_pathway_length“   s©   € ØŒ�ŠØŒGØŒG�D”F”HÑ˜tœw t¤v¤xÑ/Ñ/°!°D´G±)¸D¼F¼HÑ2DÑDñ	
ô 	
ð 	
õ ˜œ ™
 T¤W¨a¡ZÑ/°!°D´G¸Q±J±,Ñ>Ñ?Ô?ˆÝ˜œÔ+¨hÑ6Ñ7Ô7¸1Ò<Ð<Ð<Ð<Ð<Ð<r   c                 óÞ  — | j                              | j        | j        | j        j        z  | j        | j        j        z  z
  d| j        z  | j        j	        z  z   ¦  «         t          | j        dz  | j        dz  z   d| j        dz  z  z   ¦  «        }| j        | j        z  |z  | j        | j        z  |z  z   d| j        z  | j        z  |z  z   }t          | j        j        |z
  ¦  «        dk    sJ ‚d S rr   )r+   r_   r*   rJ   rI   r`   rK   rt   rL   ru   r   rO   rP   rQ   r   rN   re   )r(   ra   r[   s      r   Ú"test_3D_pathway_extension_velocityz4TestLinearPathway.test_3D_pathway_extension_velocity›   sñ   € ØŒ�ŠØŒGØŒG�D”F”HÑ˜tœw t¤v¤xÑ/Ñ/°!°D´G±)¸D¼F¼HÑ2DÑDñ	
ô 	
ð 	
õ �d”g˜q‘j 4¤7¨A¡:Ñ-°°$´'¸1±*±Ñ<Ñ=Ô=ˆàŒG�D”HÑ˜VÑ#ØŒg�d”hÑ˜vÑ%ñ&à�”‰i˜œÑ  Ñ'ñ(ð 	õ
 ˜œÔ7¸(ÑBÑCÔCÀqÒHÐHÐHÐHÐHÐHr   c                 ó  — | j                              | j        | j        | j        j        z  | j        | j        j        z  z
  d| j        z  | j        j	        z  z   ¦  «         t          | j        dz  | j        dz  z   d| j        dz  z  z   ¦  «        }| j         | j        z  | j        j        z  |z  | j        | j        z  | j        j        z  |z  z   d| j        z  | j        z  | j        j	        z  |z  z
  }| j        | j        z  | j        j        z  |z  | j        | j        z  | j        j        z  |z  z
  d| j        z  | j        z  | j        j	        z  |z  z   }| j        |f| j         |fg}| j                             | j        ¦  «        |k    sJ ‚d S )Nr.   rs   )r+   r_   r*   rJ   rI   r`   rK   rt   rL   ru   r   rM   rN   rh   )r(   ra   ÚpO_forceÚpI_forcer[   s        r   Útest_3D_pathway_to_loadsz*TestLinearPathway.test_3D_pathway_to_loads¨   s‹  € ØŒ�ŠØŒGØŒG�D”F”HÑ˜tœw t¤v¤xÑ/Ñ/°!°D´G±)¸D¼F¼HÑ2DÑDñ	
ô 	
ð 	
õ �d”g˜q‘j 4¤7¨A¡:Ñ-°°$´'¸1±*±Ñ<Ñ=Ô=ˆàŒfˆH�T”WÑ˜TœVœXÑ% fÑ,ØŒf�T”W‰n˜TœVœXÑ% fÑ,ñ-à�”‰h�t”wÑ˜tœvœxÑ'¨Ñ.ñ/ð 	ð ŒF�4”7‰N˜4œ6œ8Ñ# FÑ*ØŒf�T”W‰n˜TœVœXÑ% fÑ,ñ-à�”‰h�t”wÑ˜tœvœxÑ'¨Ñ.ñ/ð 	ð ŒW�hÐØŒW�hÐð
ˆð Œ|×$Ò$ T¤VÑ,Ô,°Ò8Ð8Ð8Ð8Ð8Ð8r   )Ú__name__Ú
__module__Ú__qualname__r)   Ústaticmethodr<   ÚmarkÚparametrizer   r9   rA   rE   ÚfixturerR   rW   r\   rb   rf   rj   rl   rn   rp   rv   rx   r|   r   r   r   r#   r#   $   s(  € € € € € ð6ð 6ð 6ð Ø„[×ÒØàˆe�D‰kŒk˜5˜5 ™;œ;Ð'¨Ð,ð	
ñô ð4ð 4ñô ñ „\ð4ð Ø„[×ÒØàˆU�4‰[Œ[ˆOØˆU�4‰[Œ[˜%˜% ™+œ+ u u¨T¡{¤{Ð3ð	
ñô ð,ð ,ñô ñ „\ð,ð Ø„[×ÒØà�5�5˜‘;”;ÐØˆU�4‰[Œ[˜$Ðð	
ñô ð,ð ,ñô ñ „\ð,ð €V„^˜DÐ!Ñ!Ô!ðð ñ "Ô!ðð+ð +ð +ð)ð )ð )ð
(ð (ð (ð4ð 4ð 4ð9ð 9ð 9ð/ð /ð /ð
;ð ;ð ;ð
9ð 9ð 9ð=ð =ð =ðIð Ið Ið9ð 9ð 9ð 9ð 9r   r#   c            
       óL  — e Zd Zd„ Zeej                             ddd„ dD ¦   «         fdd„ dD ¦   «         fd	d
„ dD ¦   «         fdd„ dD ¦   «         fg¦  «        d„ ¦   «         ¦   «         Zeej                             d e	d¦  «        g e	d¦  «         e	d¦  «        gg¦  «        d„ ¦   «         ¦   «         Z
eej                             dd e	d¦  «         e	d¦  «        f e	d¦  «        d e	d¦  «        f e	d¦  «         e	d¦  «        dfg¦  «        d„ ¦   «         ¦   «         Zd„ Zeej                             dd„ dD ¦   «         dfd„ dD ¦   «         dfd„ dD ¦   «         dfg¦  «        d„ ¦   «         ¦   «         Z ej        d ¬!¦  «        d"„ ¦   «         Zd#„ Zd$„ Zd%„ Zd&„ Zd'„ Zd(„ ZdS ))ÚTestObstacleSetPathwayc                 ó>   — t          t          t          ¦  «        sJ ‚d S r%   )r&   r   r   r'   s    r   r)   z4TestObstacleSetPathway.test_is_pathway_base_subclassÁ   s   € ÝÕ,­kÑ:Ô:Ð:Ð:Ð:Ð:Ð:r   znum_attachments, attachmentsé   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   ©r   ©r   r3   s     r   r   z!TestObstacleSetPathway.<listcomp>È   ó   € Ð<Ð<Ð< •�t‘”Ð<Ð<Ð<r   )ÚpOr*   ÚpIrs   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r‰   rŠ   s     r   r   z!TestObstacleSetPathway.<listcomp>É   ó   € ÐBÐBÐB •�t‘”ÐBÐBÐBr   )rŒ   r*   r+   r�   é   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r‰   rŠ   s     r   r   z!TestObstacleSetPathway.<listcomp>Ê   ó   € ÐHÐHÐH •�t‘”ÐHÐHÐHr   )rŒ   r*   r+   ÚpCr�   é   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r‰   rŠ   s     r   r   z!TestObstacleSetPathway.<listcomp>Ë   s   € ÐNÐNÐN •�t‘”ÐNÐNÐNr   )rŒ   r*   r+   r“   ÚpDr�   c                 óà   — t          |Ž }t          |t           ¦  «        sJ ‚t          |d¦  «        sJ ‚t          |j        ¦  «        | k    sJ ‚|j        D ]}t          |t
          ¦  «        sJ ‚Œd S )Nr-   )r   r0   r1   r2   r-   r   )Únum_attachmentsr-   r8   Ú
attachments       r   r9   z-TestObstacleSetPathway.test_valid_constructorÄ   sŒ   € õ & {Ð3ˆÝ˜(Õ$6Ñ7Ô7Ð7Ð7Ð7Ý�x Ñ/Ô/Ð/Ð/Ð/Ý�8Ô'Ñ(Ô(¨OÒ;Ð;Ð;Ð;Ø"Ô.ð 	1ð 	1ˆJÝ˜j­%Ñ0Ô0Ð0Ð0Ð0Ð0ð	1ð 	1r   r-   rŒ   r�   c                 ó|   — t          j        t          ¦  «        5  t          | Ž }d d d ¦  «         d S # 1 swxY w Y   d S r%   )r<   r=   r>   r   r?   s     r   Ú5test_invalid_constructor_attachments_incorrect_numberzLTestObstacleSetPathway.test_invalid_constructor_attachments_incorrect_numberÖ   s‚   € õ Œ]�:Ñ&Ô&ð 	1ð 	1Ý" KÐ0ˆAð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð 	1ð 	1rB   Nr*   c                 ó|   — t          j        t          ¦  «        5  t          | Ž }d d d ¦  «         d S # 1 swxY w Y   d S r%   ©r<   r=   rD   r   r?   s     r   Ú.test_invalid_constructor_attachments_not_pointzETestObstacleSetPathway.test_invalid_constructor_attachments_not_pointß   s‚   € õ Œ]�9Ñ%Ô%ð 	.ð 	.Ý Ð-ˆAð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.rB   c                 óJ  — t          t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j        t          ¦  «        5  d |_        d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  d |j        d<   d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  d |j        d<   d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  d |j        d<   d d d ¦  «         d S # 1 swxY w Y   d S )NrŒ   r*   r�   r   r/   éÿÿÿÿ)r   r   r<   r=   rU   r-   rD   ©r(   rN   s     r   rW   z4TestObstacleSetPathway.test_properties_are_immutableì   s÷  € Ý$¥U¨4¡[¤[µ%¸±+´+½uÀT¹{¼{ÑKÔKˆÝŒ]�>Ñ*Ô*ð 	'ð 	'Ø"&ˆGÔð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'åŒ]�9Ñ%Ô%ð 	*ð 	*Ø%)ˆGÔ Ñ"ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*åŒ]�9Ñ%Ô%ð 	*ð 	*Ø%)ˆGÔ Ñ"ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*åŒ]�9Ñ%Ô%ð 	+ð 	+Ø&*ˆGÔ Ñ#ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+sH   ÁA&Á&A*Á-A*Â
B!Â!B%Â(B%ÃCÃC Ã#C Ä DÄDÄDzattachments, expectedc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r‰   rŠ   s     r   r   z!TestObstacleSetPathway.<listcomp>ü   r‹   r   zObstacleSetPathway(pO, pA, pI)c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r‰   rŠ   s     r   r   z!TestObstacleSetPathway.<listcomp>   r�   r   z"ObstacleSetPathway(pO, pA, pB, pI)c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r‰   rŠ   s     r   r   z!TestObstacleSetPathway.<listcomp>  r’   r   z&ObstacleSetPathway(pO, pA, pB, pC, pI)c                 óB   — t          | Ž }t          |¦  «        |k    sJ ‚d S r%   )r   rY   )r-   r[   rN   s      r   r\   z TestObstacleSetPathway.test_repr÷   s+   € õ& % kÐ2ˆÝ�G‰}Œ} Ò(Ð(Ð(Ð(Ð(Ð(r   TrF   c                 óH  — t          d¦  «        | _        t          d¦  «        | _        t          d¦  «        | _        t          d¦  «        | _        t          d¦  «        | _        t          d¦  «        | _        t          dd¦  «        | _	        t          d¦  «        | _        d S )	NrI   rŒ   r�   r*   r+   Úqr/   rM   )r   rI   r   rŒ   r�   r*   r+   r   r§   Úqdr   rM   r'   s    r   Ú_obstacle_set_pathway_fixturez4TestObstacleSetPathway._obstacle_set_pathway_fixture  sv   € å Ñ$Ô$ˆŒÝ˜‘+”+ˆŒÝ˜‘+”+ˆŒÝ˜‘+”+ˆŒÝ˜‘+”+ˆŒÝ Ñ$Ô$ˆŒÝ   aÑ(Ô(ˆŒÝ˜‘”ˆŒˆˆr   c                 óŽ  — | j                              | j        | j        j        ¦  «         | j                             | j        | j        j        ¦  «         | j                             | j        | j        j        ¦  «         t          | j        | j         | j        | j        ¦  «        }|j
        ddt          d¦  «        z  z   k    sJ ‚d S )Nr/   r.   )r*   r_   rŒ   rI   r`   r+   rt   r�   ru   r   ra   r   r¡   s     r   rb   z1TestObstacleSetPathway.test_static_pathway_length  s˜   € ØŒ�Š˜œ ¤¤Ñ*Ô*Ð*ØŒ�Š˜œ ¤¤Ñ*Ô*Ð*ØŒ�Š˜œ ¤¤Ñ*Ô*Ð*Ý$ T¤W¨d¬g°t´wÀÄÑHÔHˆØŒ~  Q­¨a©¬¡[¡Ò0Ð0Ð0Ð0Ð0Ð0r   c                 óh  — | j                              | j        | j        j        ¦  «         | j                             | j        | j        j        ¦  «         | j                             | j        | j        j        ¦  «         t          | j        | j         | j        | j        ¦  «        }|j
        dk    sJ ‚d S ©Nr   )r*   r_   rŒ   rI   r`   r+   rt   r�   ru   r   re   r¡   s     r   rf   z=TestObstacleSetPathway.test_static_pathway_extension_velocity  s‹   € ØŒ�Š˜œ ¤¤Ñ*Ô*Ð*ØŒ�Š˜œ ¤¤Ñ*Ô*Ð*ØŒ�Š˜œ ¤¤Ñ*Ô*Ð*Ý$ T¤W¨d¬g°t´wÀÄÑHÔHˆØÔ)¨QÒ.Ð.Ð.Ð.Ð.Ð.r   c                 ó\  — | j                              | j        | j        j        ¦  «         | j                             | j        | j        j        ¦  «         | j                             | j        | j        j        ¦  «         t          | j        | j         | j        | j        ¦  «        }t          | j        | j         | j        j        z  ¦  «        t          | j         | j        | j        j        z  ¦  «        t          | j         | j        t          d¦  «        z  dz  | j        j        | j        j        z
  z  ¦  «        t          | j        | j        t          d¦  «        z  dz  | j        j        | j        j        z
  z  ¦  «        t          | j        | j        t          d¦  «        z  dz  | j        j        | j        j        z
  z  ¦  «        t          | j        | j        t          d¦  «        z  dz  | j        j        | j        j        z
  z  ¦  «        g}|                     | j        ¦  «        |k    sJ ‚d S r^   )r*   r_   rŒ   rI   r`   r+   rt   r�   ru   r   r	   rM   r   rh   rZ   s      r   rj   z3TestObstacleSetPathway.test_static_pathway_to_loads&  s£  € ØŒ�Š˜œ ¤¤Ñ*Ô*Ð*ØŒ�Š˜œ ¤¤Ñ*Ô*Ð*ØŒ�Š˜œ ¤¤Ñ*Ô*Ð*Ý$ T¤W¨d¬g°t´wÀÄÑHÔHˆå�$”'˜DœF˜7 T¤V¤XÑ-Ñ.Ô.Ý�$”'˜4œ6 D¤F¤HÑ,Ñ-Ô-Ý�$”'˜4œ6¥D¨¡G¤GÑ+¨aÑ/°4´6´8¸d¼f¼hÑ3FÑGÑHÔHÝ�$”'˜4œ6¥D¨¡G¤GÑ+¨aÑ/°4´6´8¸d¼f¼hÑ3FÑGÑHÔHÝ�$”'˜4œ6¥D¨¡G¤GÑ+¨aÑ/°4´6´8¸d¼f¼hÑ3FÑGÑHÔHÝ�$”'˜4œ6¥D¨¡G¤GÑ+¨aÑ/°4´6´8¸d¼f¼hÑ3FÑGÑHÔHð
ˆð ×Ò ¤Ñ'Ô'¨8Ò3Ð3Ð3Ð3Ð3Ð3r   c                 ó
  — | j                              | j        | j        j        | j        j        z    ¦  «         | j                             | j        t          | j        ¦  «        | j        j        z  t          | j        ¦  «        dz   | j        j        z  z
  ¦  «         | j
                             | j        t          | j        ¦  «        | j        j        z  t          | j        ¦  «        dz
  | j        j        z  z   ¦  «         t          | j        | j         | j        | j
        ¦  «        }dt          d¦  «        z  t          ddt          | j        ¦  «        z  z   ¦  «        z   }|j        |z
                       ¦   «         dk    sJ ‚d S ©Nr/   r.   r   )r*   r_   rŒ   rI   r`   rt   r+   r   r§   r   r�   r   r   ra   r   rZ   s      r   rl   z-TestObstacleSetPathway.test_2D_pathway_length5  s4  € ØŒ�Š˜œ 4¤6¤8¨d¬f¬hÑ#6Ð!7Ñ8Ô8Ð8ØŒ�ŠØŒG•S˜œ‘[”[ 4¤6¤8Ñ+­s°4´6©{¬{¸Q©À$Ä&Ä(Ñ.JÑJñ	
ô 	
ð 	
ð 	Œ�ŠØŒG•S˜œ‘[”[ 4¤6¤8Ñ+­s°4´6©{¬{¸Q©À$Ä&Ä(Ñ.JÑJñ	
ô 	
ð 	
õ % T¤W¨d¬g°t´wÀÄÑHÔHˆØ•t˜A‘w”w‘;¥ a¨!­C°´©K¬K©-Ñ&7Ñ!8Ô!8Ñ8ˆØ” Ñ)×3Ò3Ñ5Ô5¸Ò:Ð:Ð:Ð:Ð:Ð:r   c                 ó@  — | j                              | j        | j        j        | j        j        z    ¦  «         | j                             | j        t          | j        ¦  «        | j        j        z  t          | j        ¦  «        dz   | j        j        z  z
  ¦  «         | j
                             | j        t          | j        ¦  «        | j        j        z  t          | j        ¦  «        dz
  | j        j        z  z   ¦  «         t          | j        | j         | j        | j
        ¦  «        }t          d¦  «        t          | j        ¦  «        z  | j        z   dt          t          | j        ¦  «        dz   ¦  «        z  z  }|j        |z
                       ¦   «         dk    sJ ‚d S r¯   )r*   r_   rŒ   rI   r`   rt   r+   r   r§   r   r�   r   r   r¨   re   r   rZ   s      r   rn   z9TestObstacleSetPathway.test_2D_pathway_extension_velocityA  sI  € ØŒ�Š˜œ 4¤6¤8¨d¬f¬hÑ#6Ð!7Ñ8Ô8Ð8ØŒ�ŠØŒG•S˜œ‘[”[ 4¤6¤8Ñ+­s°4´6©{¬{¸Q©À$Ä&Ä(Ñ.JÑJñ	
ô 	
ð 	
ð 	Œ�ŠØŒG•S˜œ‘[”[ 4¤6¤8Ñ+­s°4´6©{¬{¸Q©À$Ä&Ä(Ñ.JÑJñ	
ô 	
ð 	
õ % T¤W¨d¬g°t´wÀÄÑHÔHˆÝ˜1‘g”g¥ D¤F¡¤Ñ+¨d¬gÑ5Ð6¸!½dÅ3ÀtÄvÁ;Ä;ÐQRÁ?Ñ>SÔ>SÑ:SÑTˆØÔ*¨XÑ5×?Ò?ÑAÔAÀQÒFÐFÐFÐFÐFÐFr   c           
      ó4  — | j                              | j        | j        j        | j        j        z    ¦  «         | j                             | j        t          | j        ¦  «        | j        j        z  t          | j        ¦  «        dz   | j        j        z  z
  ¦  «         | j
                             | j        t          | j        ¦  «        | j        j        z  t          | j        ¦  «        dz
  | j        j        z  z   ¦  «         t          | j        | j         | j        | j
        ¦  «        }t          d¦  «        dz  | j        j        | j        j        z   z  }t          dt          | j        ¦  «        z  dz   ¦  «         dz  | j        j        z  t          d¦  «        t          | j        ¦  «        z  dt          t          | j        ¦  «        dz   ¦  «        z  z  | j        j        z  z   }t          | j        t          dz  z   ¦  «        | j        j        z  t          | j        t          dz  z   ¦  «        | j        j        z  z
  }t          | j        | j        |z  ¦  «        t          | j         | j         |z  ¦  «        t          | j         | j        |z  ¦  «        t          | j        | j         |z  ¦  «        t          | j        | j        |z  ¦  «        t          | j
        | j         |z  ¦  «        g}t!          |                     | j        ¦  «        ¦  «        |k    sJ ‚d S )Nr/   r.   rs   )r*   r_   rŒ   rI   r`   rt   r+   r   r§   r   r�   r   r   r   r	   rM   r!   rh   )r(   rN   ÚpO_pA_force_vecÚpA_pB_force_vecÚpB_pI_force_vecr[   s         r   rp   z/TestObstacleSetPathway.test_2D_pathway_to_loadsM  sw  € ØŒ�Š˜œ 4¤6¤8¨d¬f¬hÑ#6Ð!7Ñ8Ô8Ð8ØŒ�ŠØŒG•S˜œ‘[”[ 4¤6¤8Ñ+­s°4´6©{¬{¸Q©À$Ä&Ä(Ñ.JÑJñ	
ô 	
ð 	
ð 	Œ�ŠØŒG•S˜œ‘[”[ 4¤6¤8Ñ+­s°4´6©{¬{¸Q©À$Ä&Ä(Ñ.JÑJñ	
ô 	
ð 	
õ % T¤W¨d¬g°t´wÀÄÑHÔHˆÝ˜q™'œ' A™+¨¬¬°D´F´HÑ)<Ñ=ˆå�1•s˜4œ6‘{”{‘? QÑ&Ñ'Ô'Ð'¨!Ñ+¨d¬f¬hÑ6Ý�1‰gŒg�˜DœF™œÑ# q­4µ°D´F±´¸a±Ñ+@Ô+@Ñ'@ÑAÀDÄFÄHÑLñMð 	õ ˜dœf¥r¨!¡t™mÑ,Ô,¨t¬v¬xÑ7½#¸d¼fÅrÈ!Át¹mÑ:LÔ:LÈtÌvÌxÑ:WÑWˆå�$”'˜4œ6 OÑ3Ñ4Ô4Ý�$”'˜DœF˜7 _Ñ4Ñ5Ô5Ý�$”'˜4œ6 OÑ3Ñ4Ô4Ý�$”'˜DœF˜7 _Ñ4Ñ5Ô5Ý�$”'˜4œ6 OÑ3Ñ4Ô4Ý�$”'˜DœF˜7 _Ñ4Ñ5Ô5ð
ˆõ ˜w×/Ò/°´Ñ7Ô7Ñ8Ô8¸HÒDÐDÐDÐDÐDÐDr   )r}   r~   r   r)   r€   r<   r�   r‚   r9   r   r›   rž   rW   r\   rƒ   r©   rb   rf   rj   rl   rn   rp   r   r   r   r…   r…   ¿   sí  € € € € € ð;ð ;ð ;ð Ø„[×ÒØ&àÐ<Ð<Ð);Ð<Ñ<Ô<Ð=ØÐBÐBÐ)AÐBÑBÔBÐCØÐHÐHÐ)GÐHÑHÔHÐIØÐNÐNÐ)MÐNÑNÔNÐOð		
ñô ð1ð 1ñô ñ „\ð1ð Ø„[×ÒØØ
ˆ%�‰+Œ+ˆ˜˜˜t™œ e e¨D¡k¤kÐ2Ð3ñô ð1ð 1ñ	ô ñ „\ð
1ð Ø„[×ÒØà�5�5˜‘;”;   d¡¤Ð,ØˆU�4‰[Œ[˜$   d¡¤Ð,ØˆU�4‰[Œ[˜%˜% ™+œ+ tÐ,ð	
ñô ð.ð .ñô ñ „\ð.ð	+ð 	+ð 	+ð Ø„[×ÒØð =Ð<Ð);Ð<Ñ<Ô<Ø0ðð
 CÐBÐ)AÐBÑBÔBØ4ðð
 IÐHÐ)GÐHÑHÔHØ8ðð	
ñô ð")ð )ñ#ô ñ „\ð$)ð €V„^˜DÐ!Ñ!Ô!ðð ñ "Ô!ðð1ð 1ð 1ð/ð /ð /ð4ð 4ð 4ð
;ð 
;ð 
;ð
Gð 
Gð 
GðEð Eð Eð Eð Er   r…   c                   óà  — e Zd Zd„ Z ej        d¬¦  «        d„ ¦   «         Zd„ Zej         	                    d e
d¦  «        f e
d¦  «         e
d¦  «         e
d	¦  «        fg¦  «        d
„ ¦   «         Zeej         	                    dd e
d¦  «        f e
d¦  «        dfg¦  «        d„ ¦   «         ¦   «         Zd„ Zej         	                    d ed¦  «         ed¦  «         ed¦  «         ed¦  «        j        g¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zed„ ¦   «         Zej         	                    dddedz  fd ed¦  «        dz   ed¦  «         dz  dfdez  dz  fd edd¦  «         ed¦  «        dz  dfedz  fg¦  «        d„ ¦   «         Zej         	                    ddd edd¦  «        ez  fdd efd defd ed¦  «        dz   ed¦  «         dz  dfd!ez  dz  fd edd¦  «         ed¦  «        dz  dfedz  fd ed¦  «         edd¦  «        z   ed¦  «          edd¦  «        z  df ed ed!d¦  «        ez  dz  z   ¦  «        fd edd¦  «         ed¦  «         edd¦  «        z  df ed edd¦  «        ez  dz  z   ¦  «        fg¦  «        d"„ ¦   «         Zej         	                    d#d$d ed¦  «         edd¦  «        z   ed¦  «          edd¦  «        z  dffd edd¦  «         ed¦  «         edd¦  «        z  dffg¦  «        d%„ ¦   «         Zej         	                    d#d$d&d'd ed¦  «        dz   ed¦  «         dz  dffd edd¦  «         ed¦  «        dz  dffd ed¦  «         edd¦  «        z   ed¦  «         dz  dffd edd¦  «         ed¦  «        dz  dffg¦  «        d(„ ¦   «         Zej         	                    d)d*d ed¦  «        dz   ed¦  «         dz  dfd ed¦  «        dz   ed¦  «        dz  dfd+ ed¦  «        dz  z
   ed¦  «         dz  dffd edd¦  «         ed¦  «        dz  dfd ed¦  «        dz   edd¦  «         df ed¦  «         dz   edd¦  «        dz
  dfff¦  «        d,„ ¦   «         Zej         	                    d)d*d-d.d ed¦  «        dz   ed¦  «         dz  dfd  ed¦  «         dz   ed¦  «         dz  dfd ed¦  «        dz  z    ed¦  «        dz  dffd edd¦  «         ed¦  «        dz  dfd ed¦  «        dz   edd¦  «         df ed¦  «         dz   edd¦  «        dz
  dffd ed¦  «        dz   ed¦  «        dz  dfd ed¦  «        dz   ed¦  «         dz  df ed¦  «         dz   ed¦  «        dz  dz
  dffd/d ed¦  «        dz   ed¦  «         dz  dfd0ez   ed1d2edz  z  z   ¦  «        z  dd ed1d2edz  z  z   ¦  «        z  fd0 ed¦  «        z  ez  d ed1d2edz  z  z   ¦  «        z  z  d0 ed¦  «        z  ez  d ed1d2edz  z  z   ¦  «        z  z  d3 ed1d2edz  z  z   ¦  «        z  fd! ed¦  «        dz   z  ez  d ed1d2edz  z  z   ¦  «        z  z  d! ed¦  «        z  ez  d ed1d2edz  z  z   ¦  «        z  z  dfff¦  «        d4„ ¦   «         Z d5„ Z!d6„ Z"d7„ Z#dS )8ÚTestWrappingPathwayc                 ó>   — t          t          t          ¦  «        sJ ‚d S r%   )r&   r   r   r'   s    r   r)   z1TestWrappingPathway.test_is_pathway_base_subclassi  s   € Ý�/­;Ñ7Ô7Ð7Ð7Ð7Ð7Ð7r   TrF   c                 óî  — t          d¦  «        | _        t          d¦  «        | _        t          dd¬¦  «        | _        t          d¦  «        | _        t          d¦  «        | _        | j        j        | _	        t          | j        | j        ¦  «        | _        t          | j        | j        | j	        ¦  «        | _        t          | j        | j        | j        ¦  «        | _        t          d¦  «        | _        d S )	Nr*   r+   ÚrT)ÚpositiverŒ   rI   rM   )r   r*   r+   r   r¹   rŒ   r   rI   ru   Úaxr   Úspherer   Úcylinderr   rN   rM   r'   s    r   Ú_wrapping_pathway_fixturez-TestWrappingPathway._wrapping_pathway_fixturel  s¯   € å˜‘+”+ˆŒÝ˜‘+”+ˆŒÝ˜ dÐ+Ñ+Ô+ˆŒÝ˜‘+”+ˆŒÝ Ñ$Ô$ˆŒØ”&”(ˆŒÝ$ T¤V¨T¬WÑ5Ô5ˆŒÝ(¨¬°´¸$¼'ÑBÔBˆŒÝ& t¤w°´¸¼ÑGÔGˆŒÝ˜‘”ˆŒˆˆr   c                 ó4  — t          | j        | j        | j        ¦  «        }t	          |t           ¦  «        sJ ‚t          |d¦  «        sJ ‚t          |j        ¦  «        dk    sJ ‚t	          |j        d         t          ¦  «        sJ ‚|j        d         | j        k    sJ ‚t	          |j        d         t          ¦  «        sJ ‚|j        d         | j        k    sJ ‚t          |d¦  «        sJ ‚t	          |j	        t          ¦  «        sJ ‚|j	        | j        k    sJ ‚d S )Nr-   r.   r   r/   Úgeometry)r   r*   r+   r½   r0   r1   r2   r-   r   rÀ   r   rV   s     r   r9   z*TestWrappingPathway.test_valid_constructory  s  € Ý" 4¤7¨D¬G°T´]ÑCÔCˆÝ˜(¥OÑ4Ô4Ð4Ð4Ð4Ý�x Ñ/Ô/Ð/Ð/Ð/Ý�8Ô'Ñ(Ô(¨AÒ-Ð-Ð-Ð-Ý˜(Ô.¨qÔ1µ5Ñ9Ô9Ð9Ð9Ð9ØÔ# AÔ&¨$¬'Ò1Ð1Ð1Ð1Ý˜(Ô.¨qÔ1µ5Ñ9Ô9Ð9Ð9Ð9ØÔ# AÔ&¨$¬'Ò1Ð1Ð1Ð1Ý�x Ñ,Ô,Ð,Ð,Ð,Ý˜(Ô+Õ-AÑBÔBÐBÐBÐBØÔ  D¤MÒ1Ð1Ð1Ð1Ð1Ð1r   r-   r*   r+   r:   c                 ó�   — t          j        t          ¦  «        5  t          g |¢| j        ‘R Ž }d d d ¦  «         d S # 1 swxY w Y   d S r%   )r<   r=   rD   r   r½   )r(   r-   r@   s      r   r›   zITestWrappingPathway.test_invalid_constructor_attachments_incorrect_number†  s’   € õ Œ]�9Ñ%Ô%ð 	=ð 	=ÝÐ< Ð<¨d¬mÐ<Ð<Ð<ˆAð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=s   š;»?Á?Nc                 ó|   — t          j        t          ¦  «        5  t          | Ž }d d d ¦  «         d S # 1 swxY w Y   d S r%   r�   r?   s     r   rž   zBTestWrappingPathway.test_invalid_constructor_attachments_not_point‘  s‚   € õ Œ]�9Ñ%Ô%ð 	.ð 	.Ý Ð-ˆAð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.rB   c                 óž   — t          j        t          ¦  «        5  t          | j        | j        ¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S r%   ©r<   r=   rD   r   r*   r+   )r(   r@   s     r   Ú1test_invalid_constructor_geometry_is_not_suppliedzETestWrappingPathway.test_invalid_constructor_geometry_is_not_supplied�  s‰   € ÝŒ]�9Ñ%Ô%ð 	2ð 	2Ý ¤¨¬Ñ1Ô1ˆAð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð 	2ð 	2s   šAÁAÁ	ArÀ   r¹   r§   rI   c                 ó    — t          j        t          ¦  «        5  t          | j        | j        |¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S r%   rÄ   )r(   rÀ   r@   s      r   Ú"test_invalid_geometry_not_geometryz6TestWrappingPathway.test_invalid_geometry_not_geometry¡  s�   € õ Œ]�9Ñ%Ô%ð 	<ð 	<Ý ¤¨¬°(Ñ;Ô;ˆAð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   šAÁAÁ
Ac                 ó  — t          j        t          ¦  «        5  | j        | j        j        d<   d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  | j        | j        j        d<   d d d ¦  «         d S # 1 swxY w Y   d S rT   )r<   r=   rD   r+   rN   r-   r*   r'   s    r   Ú&test_attachments_property_is_immutablez:TestWrappingPathway.test_attachments_property_is_immutable®  sý   € ÝŒ]�9Ñ%Ô%ð 	2ð 	2Ø*.¬'ˆDŒLÔ$ QÑ'ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2åŒ]�9Ñ%Ô%ð 	2ð 	2Ø*.¬'ˆDŒLÔ$ QÑ'ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð 	2ð 	2s   š;»?Á?ÁBÂBÂBc                 ó‚   — t          j        t          ¦  «        5  d | j        _        d d d ¦  «         d S # 1 swxY w Y   d S r%   )r<   r=   rU   rN   rÀ   r'   s    r   Ú#test_geometry_property_is_immutablez7TestWrappingPathway.test_geometry_property_is_immutable´  s€   € ÝŒ]�>Ñ*Ô*ð 	)ð 	)Ø$(ˆDŒLÔ!ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   š4´8»8c                 óP   — d| j         ›d�}t          | j        ¦  «        |k    sJ ‚d S )Nz!WrappingPathway(pA, pB, geometry=ú))r½   rY   rN   ri   s     r   r\   zTestWrappingPathway.test_repr¸  sC   € ð+Øœð+ð +ð +ð 	õ �D”LÑ!Ô! XÒ-Ð-Ð-Ð-Ð-Ð-r   c                 óP   — t          d„ t          | |¦  «        D ¦   «         ¦  «        S )Nc              3   ó&   K  — | ]\  }}||z  V — Œd S r%   r   ©r   ÚmagÚunits      r   ú	<genexpr>z9TestWrappingPathway._expand_pos_to_vec.<locals>.<genexpr>Á  s*   è è € Ð?Ð?¡  d�3�t‘8Ð?Ð?Ð?Ð?Ð?Ð?r   )ÚsumÚzip)ÚposÚframes     r   Ú_expand_pos_to_vecz&TestWrappingPathway._expand_pos_to_vec¿  s'   € åÐ?Ð?­s°3¸©¬Ð?Ñ?Ô?Ñ?Ô?Ð?r   zpA_vec, pB_vec, factor©r/   r   r   ©r   r/   r   r.   r   r‡   rs   r/   c                 ó   — |                       || j        ¦  «        }|                       || j        ¦  «        }| j                             | j        | j        |z  ¦  «         | j                             | j        | j        |z  ¦  «         t          | j        | j        | j        ¦  «        }|| j        z  }t          |j
        |z
  ¦  «        dk    sJ ‚d S r¬   )rØ   rI   r*   r_   rŒ   r¹   r+   r   r¼   r   ra   ©r(   ÚpA_vecÚpB_vecÚfactorrN   r[   s         r   Ú$test_static_pathway_on_sphere_lengthz8TestWrappingPathway.test_static_pathway_on_sphere_lengthÃ  s¶   € ð ×(Ò(¨°´Ñ8Ô8ˆØ×(Ò(¨°´Ñ8Ô8ˆØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/ØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/Ý! $¤'¨4¬7°D´KÑ@Ô@ˆØ˜$œ&‘=ˆÝ˜œ¨Ñ1Ñ2Ô2°aÒ7Ð7Ð7Ð7Ð7Ð7r   ©r    r   r   r�   c                 óÀ  — |                       || j        ¦  «        }|                       || j        ¦  «        }| j                             | j        | j        |z  ¦  «         | j                             | j        | j        |z  ¦  «         t          | j        | j        | j        ¦  «        }|t          | j        dz  ¦  «        z  }t          |j        |z
  ¦  «        dk    sJ ‚d S rd   )rØ   rI   r*   r_   rŒ   r¹   r+   r   r½   r   r   ra   rÜ   s         r   Ú&test_static_pathway_on_cylinder_lengthz:TestWrappingPathway.test_static_pathway_on_cylinder_lengthÔ  sÁ   € ð* ×(Ò(¨°´Ñ8Ô8ˆØ×(Ò(¨°´Ñ8Ô8ˆØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/ØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/Ý! $¤'¨4¬7°D´MÑBÔBˆØ�$˜tœv q™y™/œ/Ñ)ˆÝ˜œ¨Ñ1Ñ2Ô2°aÒ7Ð7Ð7Ð7Ð7Ð7r   zpA_vec, pB_vec)rÙ   rÚ   c                 ól  — |                       || j        ¦  «        }|                       || j        ¦  «        }| j                             | j        | j        |z  ¦  «         | j                             | j        | j        |z  ¦  «         t          | j        | j        | j        ¦  «        }|j	        dk    sJ ‚d S r¬   )
rØ   rI   r*   r_   rŒ   r¹   r+   r   r¼   re   ©r(   rÝ   rÞ   rN   s       r   Ú0test_static_pathway_on_sphere_extension_velocityzDTestWrappingPathway.test_static_pathway_on_sphere_extension_velocityñ  sŸ   € ð ×(Ò(¨°´Ñ8Ô8ˆØ×(Ò(¨°´Ñ8Ô8ˆØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/ØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/Ý! $¤'¨4¬7°D´KÑ@Ô@ˆØÔ)¨QÒ.Ð.Ð.Ð.Ð.Ð.r   )rÙ   rá   )rá   rÙ   c                 ól  — |                       || j        ¦  «        }|                       || j        ¦  «        }| j                             | j        | j        |z  ¦  «         | j                             | j        | j        |z  ¦  «         t          | j        | j        | j        ¦  «        }|j	        dk    sJ ‚d S r¬   )
rØ   rI   r*   r_   rŒ   r¹   r+   r   r½   re   rå   s       r   Ú2test_static_pathway_on_cylinder_extension_velocityzFTestWrappingPathway.test_static_pathway_on_cylinder_extension_velocity  sŸ   € ð ×(Ò(¨°´Ñ8Ô8ˆØ×(Ò(¨°´Ñ8Ô8ˆØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/ØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/Ý! $¤'¨4¬7°D´MÑBÔBˆØÔ)¨QÒ.Ð.Ð.Ð.Ð.Ð.r   zApA_vec, pB_vec, pA_vec_expected, pB_vec_expected, pO_vec_expected)rÙ   rÚ   rÚ   rÙ   )r    r    r   r    c                 ó  — |                       || j        ¦  «        }|                       || j        ¦  «        }| j                             | j        | j        |z  ¦  «         | j                             | j        | j        |z  ¦  «         t          | j        | j        | j        ¦  «        }t          d„ t          || j        ¦  «        D ¦   «         ¦  «        }t          d„ t          || j        ¦  «        D ¦   «         ¦  «        }t          d„ t          || j        ¦  «        D ¦   «         ¦  «        }t          | j        | j        | j        dz  t          | j        dz  ¦  «        z  z  |z  ¦  «        t          | j        | j        | j        dz  t          | j        dz  ¦  «        z  z  |z  ¦  «        t          | j        | j        | j        dz  t          | j        dz  ¦  «        z  z  |z  ¦  «        g}|                     | j        ¦  «        |k    sJ ‚d S )Nc              3   ó&   K  — | ]\  }}||z  V — Œd S r%   r   rÐ   s      r   rÓ   zMTestWrappingPathway.test_static_pathway_on_sphere_to_loads.<locals>.<genexpr>7  ó;   è è € ð 
ð 
Ù$˜#˜tˆC�‰Hð
ð 
ð 
ð 
ð 
ð 
r   c              3   ó&   K  — | ]\  }}||z  V — Œd S r%   r   rÐ   s      r   rÓ   zMTestWrappingPathway.test_static_pathway_on_sphere_to_loads.<locals>.<genexpr>:  rë   r   c              3   ó&   K  — | ]\  }}||z  V — Œd S r%   r   rÐ   s      r   rÓ   zMTestWrappingPathway.test_static_pathway_on_sphere_to_loads.<locals>.<genexpr>=  rë   r   r‡   r”   )rØ   rI   r*   r_   rŒ   r¹   r+   r   r¼   rÔ   rÕ   r	   rM   r   rh   )r(   rÝ   rÞ   ÚpA_vec_expectedÚpB_vec_expectedÚpO_vec_expectedrN   r[   s           r   Ú&test_static_pathway_on_sphere_to_loadsz:TestWrappingPathway.test_static_pathway_on_sphere_to_loads  sö  € ð8 ×(Ò(¨°´Ñ8Ô8ˆØ×(Ò(¨°´Ñ8Ô8ˆØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/ØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/Ý! $¤'¨4¬7°D´KÑ@Ô@ˆåð 
ð 
Ý(+¨O¸T¼VÑ(DÔ(Dð
ñ 
ô 
ñ 
ô 
ˆõ ð 
ð 
Ý(+¨O¸T¼VÑ(DÔ(Dð
ñ 
ô 
ñ 
ô 
ˆõ ð 
ð 
Ý(+¨O¸T¼VÑ(DÔ(Dð
ñ 
ô 
ñ 
ô 
ˆõ �$”'˜4œ6 4¤6¨1¡9­T°$´&¸!±)©_¬_Ñ#<Ñ=¸oÑMÑNÔNÝ�$”'˜4œ6 4¤6¨1¡9­T°$´&¸!±)©_¬_Ñ#<Ñ=¸oÑMÑNÔNÝ�$”'˜4œ6 4¤6¨1¡9­T°$´&¸!±)©_¬_Ñ#<Ñ=¸oÑMÑNÔNð
ˆð
 ×Ò ¤Ñ'Ô'¨8Ò3Ð3Ð3Ð3Ð3Ð3r   )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   éûÿÿÿé   é   éüÿÿÿc                 óú  — |                       || j        ¦  «        }|                       || j        ¦  «        }| j                             | j        | j        |z  ¦  «         | j                             | j        | j        |z  ¦  «         t          | j        | j        | j        ¦  «        }| j	        |                       || j        ¦  «        z  }| j	        |                       || j        ¦  «        z  }| j	        |                       || j        ¦  «        z  }	t          | j        |¦  «        t          | j        |¦  «        t          | j        |	¦  «        g}
t          |                     | j	        ¦  «        ¦  «        |
k    sJ ‚d S r%   )rØ   rI   r*   r_   rŒ   r¹   r+   r   r½   rM   r	   r!   rh   )r(   rÝ   rÞ   rî   rï   rð   rN   ÚpA_force_expectedÚpB_force_expectedÚpO_force_expectedr[   s              r   Ú(test_static_pathway_on_cylinder_to_loadsz<TestWrappingPathway.test_static_pathway_on_cylinder_to_loadsG  sk  € ðj ×(Ò(¨°´Ñ8Ô8ˆØ×(Ò(¨°´Ñ8Ô8ˆØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/ØŒ�Š˜œ ¤¨¡Ñ/Ô/Ð/Ý! $¤'¨4¬7°D´MÑBÔBˆà œF 4×#:Ò#:¸?Ø;?¼6ñ$Cô $Cñ CÐà œF 4×#:Ò#:¸?Ø;?¼6ñ$Cô $Cñ CÐà œF 4×#:Ò#:¸?Ø;?¼6ñ$Cô $Cñ CÐõ �$”'Ð,Ñ-Ô-Ý�$”'Ð,Ñ-Ô-Ý�$”'Ð,Ñ-Ô-ð
ˆõ
 ˜w×/Ò/°´Ñ7Ô7Ñ8Ô8¸HÒDÐDÐDÐDÐDÐDr   c                 óÆ  — t          d¦  «        }| j        | j        j        z  }| j        t	          |¦  «        | j        j        z  t          |¦  «        | j        j        z  z   z  }| j                             | j	        |¦  «         | j
                             | j	        |¦  «         | j        t          |dz  ¦  «        z  }t          | j        j        |z
  ¦  «        dk    sJ ‚d S )Nr§   r.   r   )r   r¹   rI   r`   r   r   rt   r*   r_   rŒ   r+   r   r   rN   ra   )r(   r§   ÚpA_posÚpB_posr[   s        r   Ú"test_2D_pathway_on_cylinder_lengthz6TestWrappingPathway.test_2D_pathway_on_cylinder_length�  sº   € Ý˜3ÑÔˆØ”˜œœ‘ˆØ”�˜Q™œ ¤¤™­3¨q©6¬6°$´&´(©?Ñ:Ñ;ˆØŒ�Š˜œ Ñ(Ô(Ð(ØŒ�Š˜œ Ñ(Ô(Ð(Ø”6�$˜q !™t™*œ*Ñ$ˆÝ˜œÔ+¨hÑ6Ñ7Ô7¸1Ò<Ð<Ð<Ð<Ð<Ð<r   c                 óò  — t          d¦  «        }t          dd¦  «        }| j        | j        j        z  }| j        t	          |¦  «        | j        j        z  t          |¦  «        | j        j        z  z   z  }| j                             | j	        |¦  «         | j
                             | j	        |¦  «         | j        t          |dz  ¦  «        |z  z  |z  }t          | j        j        |z
  ¦  «        dk    sJ ‚d S )Nr§   r/   r.   r   )r   r¹   rI   r`   r   r   rt   r*   r_   rŒ   r+   r   r   rN   re   )r(   r§   r¨   rþ   rÿ   r[   s         r   Ú.test_2D_pathway_on_cylinder_extension_velocityzBTestWrappingPathway.test_2D_pathway_on_cylinder_extension_velocity˜  sÒ   € Ý˜3ÑÔˆÝ˜C Ñ#Ô#ˆØ”˜œœ‘ˆØ”�˜Q™œ ¤¤™­3¨q©6¬6°$´&´(©?Ñ:Ñ;ˆØŒ�Š˜œ Ñ(Ô(Ð(ØŒ�Š˜œ Ñ(Ô(Ð(Ø”6�4  1¡™:œ: a™<Ñ(¨Ñ+ˆÝ˜œÔ7¸(ÑBÑCÔCÀqÒHÐHÐHÐHÐHÐHr   c                 óf  — t          d¦  «        }| j        | j        j        z  }| j        t	          |¦  «        | j        j        z  t          |¦  «        | j        j        z  z   z  }| j                             | j	        |¦  «         | j
                             | j	        |¦  «         | j        | j        j        z  }| j        t          |¦  «        | j        j        z  t	          |¦  «        | j        j        z  z
  z  }| j        t          |¦  «         | j        j        z  t	          |¦  «        dz
  | j        j        z  z   z  }t          | j        |¦  «        t          | j
        |¦  «        t          | j	        |¦  «        g}t          | j                             | j        ¦  «        ¦  «        }||k    sJ ‚d S )Nr§   r/   )r   r¹   rI   r`   r   r   rt   r*   r_   rŒ   r+   rM   r	   r!   rN   rh   )	r(   r§   rþ   rÿ   ÚpA_forceÚpB_forcerz   r[   r    s	            r   Ú$test_2D_pathway_on_cylinder_to_loadsz8TestWrappingPathway.test_2D_pathway_on_cylinder_to_loads¢  sX  € Ý˜3ÑÔˆØ”˜œœ‘ˆØ”�˜Q™œ ¤¤™­3¨q©6¬6°$´&´(©?Ñ:Ñ;ˆØŒ�Š˜œ Ñ(Ô(Ð(ØŒ�Š˜œ Ñ(Ô(Ð(à”6˜$œ&œ(‘?ˆØ”6�3˜q™6œ6 $¤&¤(™?­S°©V¬V°D´F´H©_Ñ<Ñ=ˆØ”6�C ™FœF˜7 4¤6¤8Ñ+­s°1©v¬v¸©z¸4¼6¼8Ñ.CÑCÑDˆå�$”'˜8Ñ$Ô$Ý�$”'˜8Ñ$Ô$Ý�$”'˜8Ñ$Ô$ð
ˆõ   ¤× 5Ò 5°d´fÑ =Ô =Ñ>Ô>ˆØ˜Ò Ð Ð Ð Ð Ð r   )$r}   r~   r   r)   r<   rƒ   r¾   r9   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¶   g  s*
  € € € € € ð8ð 8ð 8ð €V„^˜DÐ!Ñ!Ô!ð
ð 
ñ "Ô!ð
ð2ð 2ð 2ð „[×ÒØàˆU�4‰[Œ[ˆOØˆU�4‰[Œ[˜%˜% ™+œ+ u u¨T¡{¤{Ð3ð	
ñô ð=ð =ñô ð=ð Ø„[×ÒØà�5�5˜‘;”;ÐØˆU�4‰[Œ[˜$Ðð	
ñô ð.ð .ñô ñ „\ð.ð2ð 2ð 2ð „[×ÒØàˆF�3‰KŒKØˆN˜3ÑÔØˆN˜3ÑÔØˆN˜3ÑÔÔ!ð		
ñô ð<ð <ñô ð<ð2ð 2ð 2ð)ð )ð )ð.ð .ð .ð ð@ð @ñ „\ð@ð „[×ÒØ à˜	 2 a¡4Ð(Ø˜˜˜a™œ ™ T T¨!¡W¤W H¨Q¡J°Ð2°A°b±D¸±FÐ;Ø˜˜ ! Q™œ¨¨¨a©¬°©°AÐ6¸¸1¹Ð=ð	
ñô ð8ð 8ñô ð8ð „[×ÒØ à˜	 8 8¨A¨q¡>¤>°"Ñ#4Ð5Ø˜
 BÐ'Ø˜ BÐ'Ø˜˜˜a™œ ™ T T¨!¡W¤W H¨Q¡J°Ð2°A°b±D¸±FÐ;Ø˜˜ ! Q™œ¨¨¨a©¬°©°AÐ6¸¸1¹Ð=àØ��a‘”˜˜ ! Q™œÑ'¨$¨$¨q©'¬'¨°(°(¸1¸a±.´.Ñ)@À!ÐDØ��Q˜(˜( 1 a™.œ.¨Ñ+¨aÑ/Ñ/Ñ0Ô0ðð Ø�˜!˜Q‘”   a¡¤¨¨°!°Q©¬Ñ!7¸Ð;Ø��Q˜(˜( 1 a™.œ.¨Ñ+¨aÑ/Ñ/Ñ0Ô0ðð	
ñô ð(8ð 8ñ)ô ð(8ð „[×ÒØà"Ø˜˜˜a™œ  ¨!¨Q¡¤Ñ/°$°$°q±'´'°¸(¸(À1Àa¹.¼.Ñ1HÈ!ÐLÐMØ˜˜ ! Q™œ¨¨¨a©¬°°¸!¸Q±´Ñ)?ÀÐCÐDð	
ñô ð/ð /ñô ð/ð „[×ÒØà"Ø#Ø#Ø˜˜˜a™œ ™ T T¨!¡W¤W H¨Q¡J°Ð2Ð3Ø˜˜ ! Q™œ¨¨¨a©¬°©°AÐ6Ð7Ø˜˜˜a™œ  ¨!¨Q¡¤Ñ/°$°$°q±'´'°¸!±¸QÐ?Ð@Ø˜˜ ! Q™œ¨¨¨a©¬°©°AÐ6Ð7ð	
ñô ð/ð /ñô ð/ð „[×ÒØKàEàØ��a‘”˜‘˜T˜T !™WœW˜H Q™J¨Ð*ØØ��a‘”˜‘˜D˜D ™GœG A™I qÐ)Ø�d�d˜1‘g”g˜a‘i‘ $ $ q¡'¤' ¨!¡¨QÐ/ðð Ø�˜!˜Q‘”   a¡¤¨¡¨AÐ.ØØ��a‘”˜‘˜X˜X a¨™^œ^˜O¨QÐ/Ø�$�q‘'”'�˜!‘˜X˜X a¨™^œ^¨aÑ/°Ð3ðð	
ñô ð(4ð 4ñ)ô ð(4ð< „[×ÒØKàEØEØFàØ��a‘”˜‘˜T˜T !™WœW˜H Q™J¨Ð*ØØ�$�q‘'”'�˜!‘˜d˜d 1™gœg˜X a™Z¨Ð+Ø�T�T˜!‘W”W˜Q‘Y‘   Q¡¤¨¡	¨1Ð-ðð Ø�˜!˜Q‘”   a¡¤¨¡¨AÐ.ØØ��a‘”˜‘˜X˜X a¨™^œ^˜O¨QÐ/Ø�$�q‘'”'�˜!‘˜X˜X a¨™^œ^¨aÑ/°Ð3ðð Ø��a‘”˜‘˜D˜D ™GœG A™I qÐ)ØØ��a‘”˜‘˜T˜T !™WœW˜H Q™J¨Ð*Ø�$�q‘'”'�˜!‘˜T˜T !™WœW Q™Y¨™]¨AÐ.ðð EàØ��a‘”˜‘˜T˜T !™WœW˜H Q™J¨Ð*Ø�B‘�t�t˜B  B¨¡E¡™MÑ*Ô*Ñ*¨A¨q°°°b¸2¸bÀ!¹e¹8±mÑ1DÔ1DÑ/DÐEà�t�t˜A‘w”w‘J˜r‘M 1 T T¨"¨r°"°a±%©x©-Ñ%8Ô%8Ñ#8Ñ9Ø�t�t˜A‘w”w‘J˜r‘M 1 T T¨"¨r°"°a±%©x©-Ñ%8Ô%8Ñ#8Ñ9Ø�t�t˜B  B¨¡E¡™MÑ*Ô*Ñ*ðð �t�t˜A‘w”w ‘{‘O BÑ&¨¨$¨$¨r°B°r¸1±u±H©}Ñ*=Ô*=Ñ(=Ñ>Ø�d�d˜1‘g”g‘I˜b‘L ! D D¨¨b°°Q±©h©Ñ$7Ô$7Ñ"7Ñ8Øððð5)	
ñ,ô ,ðZEð Eñ[,ô ,ðZEð6=ð =ð =ðIð Ið Ið!ð !ð !ð !ð !r   r¶   )Ú__doc__r<   Ú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Ð Bà €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ðX9ð X9ð X9ð X9ð X9ñ X9ô X9ð X9ðveEð eEð eEð eEð eEñ eEô eEð eEðPL!ð L!ð L!ð L!ð L!ñ L!ô L!ð L!ð L!ð L!r   