Ë
    7^(hpa  ã                   ó²   — 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y)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 �cg c]6  }|j                  |j                  |j                  j                  «       «      ‘Œ8 c}S c c}w ©N)Ú	__class__ÚlocationÚvectorr   )ÚloadsÚloads     úh/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/physics/mechanics/tests/test_pathway.pyÚ_simplify_loadsr      s@   € ð öàð 	�‰�t—}‘} d§k¡k×&:Ñ&:Ó&<Õ=òð ùò s   …;Ac            
       óò  — e Zd Zd„ Zeej                  j                  d ed«       ed«      fi fg«      d„ «       «       Z	eej                  j                  d ed«      f ed«       ed«       ed«      fg«      d„ «       «       Z
eej                  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y	)ÚTestLinearPathwayc                 ó0   — t        t        t        «      sJ ‚y r   )Ú
issubclassr
   r   ©Úselfs    r   Útest_is_pathway_base_subclassz/TestLinearPathway.test_is_pathway_base_subclass&   s   € Üœ-¬Ô5Ð5Ñ5ó    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 ‚y )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ˆÜ˜(¤MÔ2Ð2Ð2Ü�x Ô/Ð/Ð/Ü�8×'Ñ'Ó(¨AÒ-Ð-Ð-Ø×#Ñ# AÑ&¨&Ñ0Ð0Ð0Ø×#Ñ# AÑ&¨&Ñ0Ð0Ð0Ü˜(×.Ñ.¨qÑ1´5Ô9Ð9Ð9Ø×#Ñ# AÑ&×+Ñ+¨tÒ3Ð3Ð3Ü˜(×.Ñ.¨qÑ1´5Ô9Ð9Ð9Ø×#Ñ# AÑ&×+Ñ+¨tÒ3Ð3Ñ3r%   r)   ÚpZc                 óp   — t        j                  t        «      5  t        | Ž }d d d «       y # 1 sw Y   y xY wr   )ÚpytestÚraisesÚ
ValueErrorr
   ©r)   Ú_s     r   Ú)test_invalid_attachments_incorrect_numberz;TestLinearPathway.test_invalid_attachments_incorrect_number=   s/   € ô �]‰]œ:Ó&ñ 	,Ü˜{Ð+ˆA÷	,÷ 	,ñ 	,úó   š	,¬5Nc                 óp   — t        j                  t        «      5  t        | Ž }d d d «       y # 1 sw Y   y xY wr   )r8   r9   Ú	TypeErrorr
   r;   s     r   Ú"test_invalid_attachments_not_pointz4TestLinearPathway.test_invalid_attachments_not_pointI   s/   € ô �]‰]œ9Ó%ñ 	,Ü˜{Ð+ˆA÷	,÷ 	,ñ 	,úr>   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«      | _        y )	NÚNr&   r'   Úq1Úq2Úq3r+   ÚF)r   rE   r   r&   r'   r
   Úpathwayr   rF   rG   rH   Úq1dÚq2dÚq3dr   rI   r"   s    r   Ú_linear_pathway_fixturez)TestLinearPathway._linear_pathway_fixtureU   s“   € ä Ó$ˆŒÜ˜“+ˆŒÜ˜“+ˆŒÜ$ T§W¡W¨d¯g©gÓ6ˆŒÜ  Ó&ˆŒÜ  Ó&ˆŒÜ  Ó&ˆŒÜ! $¨Ó*ˆŒÜ! $¨Ó*ˆŒÜ! $¨Ó*ˆŒÜ˜“ˆ�r%   c                 ó¢  — t        | j                  | j                  «      }t        j                  t
        «      5  d |_        d d d «       t        j                  t        «      5  d |j                  d<   d d d «       t        j                  t        «      5  d |j                  d<   d d d «       y # 1 sw Y   ŒlxY w# 1 sw Y   ŒGxY w# 1 sw Y   y xY w©Nr   r+   )r
   r&   r'   r8   r9   ÚAttributeErrorr)   r@   ©r#   r4   s     r   Útest_properties_are_immutablez/TestLinearPathway.test_properties_are_immutablec   s¦   € Ü  §¡¨$¯'©'Ó2ˆÜ�]‰]œ>Ó*ñ 	(Ø#'ˆHÔ ÷	(ä�]‰]œ9Ó%ñ 	+Ø&*ˆH× Ñ  Ñ#÷	+ä�]‰]œ9Ó%ñ 	+Ø&*ˆH× Ñ  Ñ#÷	+ð 	+÷		(ð 	(ú÷	+ð 	+ú÷	+ð 	+ús#   ºB-Á#B9ÂCÂ-B6Â9CÃCc                 óh   — t        | j                  | j                  «      }d}t        |«      |k(  sJ ‚y )NzLinearPathway(pA, pB))r
   r&   r'   Úrepr©r#   rJ   Úexpecteds      r   Ú	test_reprzTestLinearPathway.test_reprl   s-   € Ü §¡¨¯©Ó1ˆØ*ˆÜ�G‹} Ò(Ð(Ñ(r%   c                 ó´   — | j                   j                  | j                  d| j                  j                  z  «       | j
                  j                  dk(  sJ ‚y ©Nr*   )r'   Úset_posr&   rE   ÚxrJ   Úlengthr"   s    r   Útest_static_pathway_lengthz,TestLinearPathway.test_static_pathway_lengthq   s<   € Ø�‰�‰˜Ÿ™  4§6¡6§8¡8¡Ô,Ø�|‰|×"Ñ" aÒ'Ð'Ñ'r%   c                 ó´   — | j                   j                  | j                  d| j                  j                  z  «       | j
                  j                  dk(  sJ ‚y ©Nr*   r   )r'   r[   r&   rE   r\   rJ   Úextension_velocityr"   s    r   Ú&test_static_pathway_extension_velocityz8TestLinearPathway.test_static_pathway_extension_velocityu   s<   € Ø�‰�‰˜Ÿ™  4§6¡6§8¡8¡Ô,Ø�|‰|×.Ñ.°!Ò3Ð3Ñ3r%   c                 ó�  — | j                   j                  | j                  d| j                  j                  z  «       | j                  | j
                   | j                  j                  z  f| j                   | j
                  | j                  j                  z  fg}| j                  j                  | j
                  «      |k(  sJ ‚y rZ   )r'   r[   r&   rE   r\   rI   rJ   Úto_loads©r#   rW   s     r   Útest_static_pathway_to_loadsz.TestLinearPathway.test_static_pathway_to_loadsy   s‰   € Ø�‰�‰˜Ÿ™  4§6¡6§8¡8¡Ô,à�W‰W˜Ÿ™�h˜tŸv™vŸx™xÑ'Ð(Ø�W‰W�d—f‘f˜TŸV™VŸX™X‘oÐ&ð
ˆð �|‰|×$Ñ$ T§V¡VÓ,°Ò8Ð8Ñ8r%   c                 ó  — | j                   j                  | j                  d| j                  z  | j                  j
                  z  «       dt        | j                  dz  «      z  }| j                  j                  |k(  sJ ‚y rZ   )	r'   r[   r&   rF   rE   r\   r   rJ   r]   re   s     r   Útest_2D_pathway_lengthz(TestLinearPathway.test_2D_pathway_length�   s\   € Ø�‰�‰˜Ÿ™  4§7¡7¡¨4¯6©6¯8©8Ñ!3Ô4Ø”T˜$Ÿ'™' 1™*Ó%Ñ%ˆØ�|‰|×"Ñ" hÒ.Ð.Ñ.r%   c                 ó8  — | j                   j                  | j                  d| j                  z  | j                  j
                  z  «       dt        | j                  dz  «      z  | j                  z  | j                  z  }| j                  j                  |k(  sJ ‚y rZ   )
r'   r[   r&   rF   rE   r\   r   rK   rJ   ra   re   s     r   Ú"test_2D_pathway_extension_velocityz4TestLinearPathway.test_2D_pathway_extension_velocity†   sn   € Ø�‰�‰˜Ÿ™  4§7¡7¡¨4¯6©6¯8©8Ñ!3Ô4Ø”T˜$Ÿ'™' 1™*Ó%Ñ% d§h¡hÑ.¨t¯w©wÑ6ˆØ�|‰|×.Ñ.°(Ò:Ð:Ñ:r%   c                 óB  — | j                   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                  | j                  «      |k(  sJ ‚y rZ   )
r'   r[   r&   rF   rE   r\   rI   r   rJ   rd   re   s     r   Útest_2D_pathway_to_loadsz*TestLinearPathway.test_2D_pathway_to_loads‹   sÉ   € Ø�‰�‰˜Ÿ™  4§7¡7¡¨4¯6©6¯8©8Ñ!3Ô4à�W‰W˜Ÿ™�h §¡¬$¨t¯w©w¸©zÓ*:Ñ :Ñ;¸D¿F¹F¿H¹HÑDÐEØ�W‰W�d—f‘f˜dŸg™g¬¨T¯W©W°a©ZÓ(8Ñ8Ñ9¸$¿&¹&¿(¹(ÑBÐCð
ˆð �|‰|×$Ñ$ T§V¡VÓ,°Ò8Ð8Ñ8r%   c                 óì  — | j                   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 ‚y ©Nr*   é   r   )r'   r[   r&   rF   rE   r\   rG   ÚyrH   Úzr   r   rJ   r]   re   s     r   Útest_3D_pathway_lengthz(TestLinearPathway.test_3D_pathway_length“   s±   € Ø�‰�‰Ø�G‰GØ�G‰G�D—F‘F—H‘HÑ˜tŸw™w t§v¡v§x¡xÑ/Ñ/°!°D·G±G±)¸D¿F¹F¿H¹HÑ2DÑDô	
ô ˜Ÿ™ ™
 T§W¡W¨a¡ZÑ/°!°D·G±G¸Q±J±,Ñ>Ó?ˆÜ˜Ÿ™×+Ñ+¨hÑ6Ó7¸1Ò<Ð<Ñ<r%   c                 óž  — | j                   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 ‚y rn   )r'   r[   r&   rF   rE   r\   rG   rp   rH   rq   r   rK   rL   rM   r   rJ   ra   )r#   r]   rW   s      r   Ú"test_3D_pathway_extension_velocityz4TestLinearPathway.test_3D_pathway_extension_velocity›   s  € Ø�‰�‰Ø�G‰GØ�G‰G�D—F‘F—H‘HÑ˜tŸw™w t§v¡v§x¡xÑ/Ñ/°!°D·G±G±)¸D¿F¹F¿H¹HÑ2DÑDô	
ô �d—g‘g˜q‘j 4§7¡7¨A¡:Ñ-°°$·'±'¸1±*±Ñ<Ó=ˆà�G‰G�D—H‘HÑ˜VÑ#Ø�g‰g�d—h‘hÑ˜vÑ%ñ&à�—‘‰i˜Ÿ™Ñ  Ñ'ñ(ð 	ô
 ˜Ÿ™×7Ñ7¸(ÑBÓCÀqÒHÐHÑHr%   c                 ó¤  — | j                   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                  | j                  «      |k(  sJ ‚y )Nr*   ro   )r'   r[   r&   rF   rE   r\   rG   rp   rH   rq   r   rI   rJ   rd   )r#   r]   ÚpO_forceÚpI_forcerW   s        r   Útest_3D_pathway_to_loadsz*TestLinearPathway.test_3D_pathway_to_loads¨   sÆ  € Ø�‰�‰Ø�G‰GØ�G‰G�D—F‘F—H‘HÑ˜tŸw™w t§v¡v§x¡xÑ/Ñ/°!°D·G±G±)¸D¿F¹F¿H¹HÑ2DÑDô	
ô �d—g‘g˜q‘j 4§7¡7¨A¡:Ñ-°°$·'±'¸1±*±Ñ<Ó=ˆà�f‰fˆH�T—W‘WÑ˜TŸV™VŸX™XÑ% fÑ,Ø�f‰f�T—W‘W‰n˜TŸV™VŸX™XÑ% fÑ,ñ-à�—‘‰h�t—w‘wÑ˜tŸv™vŸx™xÑ'¨Ñ.ñ/ð 	ð �F‰F�4—7‘7‰N˜4Ÿ6™6Ÿ8™8Ñ# FÑ*Ø�f‰f�T—W‘W‰n˜TŸV™VŸX™XÑ% fÑ,ñ-à�—‘‰h�t—w‘wÑ˜tŸv™vŸx™xÑ'¨Ñ.ñ/ð 	ð �W‰W�hÐØ�W‰W�hÐð
ˆð �|‰|×$Ñ$ T§V¡VÓ,°Ò8Ð8Ñ8r%   )Ú__name__Ú
__module__Ú__qualname__r$   Ústaticmethodr8   ÚmarkÚparametrizer   r5   r=   rA   ÚfixturerN   rS   rX   r^   rb   rf   rh   rj   rl   rr   rt   rx   © r%   r   r   r   $   sC  „ ò6ð Ø‡[�[×ÑØá�D‹k™5 ›;Ð'¨Ð,ð	
óñ4óó ð4ð Ø‡[�[×ÑØá�4‹[ˆOÙ�4‹[™% ›+¡u¨T£{Ð3ð	
óñ,óó ð,ð Ø‡[�[×ÑØà‘5˜“;ÐÙ�4‹[˜$Ðð	
óñ,óó ð,ð €V‡^�^˜DÔ!ñó "ðò+ò)ò
(ò4ò9ò/ò
;ò
9ò=òIó9r%   r   c                   ó:  — e Zd Zd„ Zeej                  j                  dddD � ��cg c]  }t        |«      ‘Œ c}}} fddD � ��cg c]  }t        |«      ‘Œ c}}} fddD � ��cg c]  }t        |«      ‘Œ c}}} fd	d
D � ��cg c]  }t        |«      ‘Œ c}}} fg«      d„ «       «       Z	eej                  j                  d ed«      g ed«       ed«      gg«      d„ «       «       Z
eej                  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                  j                  ddD � ��cg c]  }t        |«      ‘Œ c}}} dfdD � ��cg c]  }t        |«      ‘Œ c}}} dfdD � ��cg c]  }t        |«      ‘Œ c}}} dfg«      d„ «       «       Z ej                  d¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd „ Zd!„ Zyc c}}} w c c}}} w c c}}} w c c}}} w c c}}} w c c}}} w c c}}} w )"ÚTestObstacleSetPathwayc                 ó0   — t        t        t        «      sJ ‚y r   )r!   r   r   r"   s    r   r$   z4TestObstacleSetPathway.test_is_pathway_base_subclassÁ   s   € ÜÔ,¬kÔ:Ð:Ñ:r%   znum_attachments, attachmentsé   )ÚpOr&   ÚpIro   )r…   r&   r'   r†   é   )r…   r&   r'   ÚpCr†   é   )r…   r&   r'   rˆ   ÚpDr†   c                 óÎ   — t        |Ž }t        |t         «      sJ ‚t        |d«      sJ ‚t        |j                  «      | k(  sJ ‚|j                  D ]  }t        |t
        «      rŒJ ‚ y )Nr)   )r   r,   r-   r.   r)   r   )Únum_attachmentsr)   r4   Ú
attachments       r   r5   z-TestObstacleSetPathway.test_valid_constructorÄ   sm   € ô & {Ð3ˆÜ˜(Ô$6Ô7Ð7Ð7Ü�x Ô/Ð/Ð/Ü�8×'Ñ'Ó(¨OÒ;Ð;Ð;Ø"×.Ñ.ò 	1ˆJÜ˜j¬%Õ0Ð0Ð0ñ	1r%   r)   r…   r†   c                 óp   — t        j                  t        «      5  t        | Ž }d d d «       y # 1 sw Y   y xY wr   )r8   r9   r:   r   r;   s     r   Ú5test_invalid_constructor_attachments_incorrect_numberzLTestObstacleSetPathway.test_invalid_constructor_attachments_incorrect_numberÖ   s/   € ô �]‰]œ:Ó&ñ 	1Ü" KÐ0ˆA÷	1÷ 	1ñ 	1úr>   Nr&   c                 óp   — t        j                  t        «      5  t        | Ž }d d d «       y # 1 sw Y   y xY wr   ©r8   r9   r@   r   r;   s     r   Ú.test_invalid_constructor_attachments_not_pointzETestObstacleSetPathway.test_invalid_constructor_attachments_not_pointß   s/   € ô �]‰]œ9Ó%ñ 	.Ü Ð-ˆA÷	.÷ 	.ñ 	.úr>   c                 ó,  — t        t        d«      t        d«      t        d«      «      }t        j                  t        «      5  d |_        d d d «       t        j                  t        «      5  d |j
                  d<   d d d «       t        j                  t        «      5  d |j
                  d<   d d d «       t        j                  t        «      5  d |j
                  d<   d d d «       y # 1 sw Y   Œ�xY w# 1 sw Y   ŒxxY w# 1 sw Y   ŒSxY w# 1 sw Y   y xY w)Nr…   r&   r†   r   r+   éÿÿÿÿ)r   r   r8   r9   rQ   r)   r@   ©r#   rJ   s     r   rS   z4TestObstacleSetPathway.test_properties_are_immutableì   sÝ   € Ü$¤U¨4£[´%¸³+¼uÀT»{ÓKˆÜ�]‰]œ>Ó*ñ 	'Ø"&ˆGÔ÷	'ä�]‰]œ9Ó%ñ 	*Ø%)ˆG×Ñ Ñ"÷	*ä�]‰]œ9Ó%ñ 	*Ø%)ˆG×Ñ Ñ"÷	*ä�]‰]œ9Ó%ñ 	+Ø&*ˆG×Ñ Ñ#÷	+ð 	+÷	'ð 	'ú÷	*ð 	*ú÷	*ð 	*ú÷	+ð 	+ús0   ÁC&Á+C2ÂC>ÃD
Ã&C/Ã2C;Ã>DÄ
Dzattachments, expectedzObstacleSetPathway(pO, pA, pI)z"ObstacleSetPathway(pO, pA, pB, pI)z&ObstacleSetPathway(pO, pA, pB, pC, pI)c                 ó4   — t        | Ž }t        |«      |k(  sJ ‚y r   )r   rU   )r)   rW   rJ   s      r   rX   z TestObstacleSetPathway.test_repr÷   s    € ô& % kÐ2ˆÜ�G‹} Ò(Ð(Ñ(r%   TrB   c                 ó  — t        d«      | _        t        d«      | _        t        d«      | _        t        d«      | _        t        d«      | _        t        d«      | _        t        dd«      | _	        t        d«      | _        y )	NrE   r…   r†   r&   r'   Úqr+   rI   )r   rE   r   r…   r†   r&   r'   r   r˜   Úqdr   rI   r"   s    r   Ú_obstacle_set_pathway_fixturez4TestObstacleSetPathway._obstacle_set_pathway_fixture  s_   € ä Ó$ˆŒÜ˜“+ˆŒÜ˜“+ˆŒÜ˜“+ˆŒÜ˜“+ˆŒÜ Ó$ˆŒÜ   aÓ(ˆŒÜ˜“ˆ�r%   c                 ó  — | j                   j                  | j                  | 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 ‚y )Nr+   r*   )r&   r[   r…   rE   r\   r'   rp   r†   rq   r   r]   r   r•   s     r   r^   z1TestObstacleSetPathway.test_static_pathway_length  sš   € Ø�‰�‰˜Ÿ™ §¡§¡Ô*Ø�‰�‰˜Ÿ™ §¡§¡Ô*Ø�‰�‰˜Ÿ™ §¡§¡Ô*Ü$ T§W¡W¨d¯g©g°t·w±wÀÇÁÓHˆØ�~‰~  Q¬¨a«¡[¡Ò0Ð0Ñ0r%   c                 óî  — | j                   j                  | j                  | j                  j                  «       | j
                  j                  | j                  | j                  j                  «       | j                  j                  | j                  | j                  j                  «       t        | j                  | j                   | j
                  | j                  «      }|j                  dk(  sJ ‚y ©Nr   )r&   r[   r…   rE   r\   r'   rp   r†   rq   r   ra   r•   s     r   rb   z=TestObstacleSetPathway.test_static_pathway_extension_velocity  s�   € Ø�‰�‰˜Ÿ™ §¡§¡Ô*Ø�‰�‰˜Ÿ™ §¡§¡Ô*Ø�‰�‰˜Ÿ™ §¡§¡Ô*Ü$ T§W¡W¨d¯g©g°t·w±wÀÇÁÓHˆØ×)Ñ)¨QÒ.Ð.Ñ.r%   c                 óÊ  — | j                   j                  | j                  | 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                  | j                  «      |k(  sJ ‚y rZ   )r&   r[   r…   rE   r\   r'   rp   r†   rq   r   r	   rI   r   rd   rV   s      r   rf   z3TestObstacleSetPathway.test_static_pathway_to_loads&  sÊ  € Ø�‰�‰˜Ÿ™ §¡§¡Ô*Ø�‰�‰˜Ÿ™ §¡§¡Ô*Ø�‰�‰˜Ÿ™ §¡§¡Ô*Ü$ T§W¡W¨d¯g©g°t·w±wÀÇÁÓHˆä�$—'‘'˜DŸF™F˜7 T§V¡V§X¡XÑ-Ó.Ü�$—'‘'˜4Ÿ6™6 D§F¡F§H¡HÑ,Ó-Ü�$—'‘'˜4Ÿ6™6¤D¨£GÑ+¨aÑ/°4·6±6·8±8¸d¿f¹f¿h¹hÑ3FÑGÓHÜ�$—'‘'˜4Ÿ6™6¤D¨£GÑ+¨aÑ/°4·6±6·8±8¸d¿f¹f¿h¹hÑ3FÑGÓHÜ�$—'‘'˜4Ÿ6™6¤D¨£GÑ+¨aÑ/°4·6±6·8±8¸d¿f¹f¿h¹hÑ3FÑGÓHÜ�$—'‘'˜4Ÿ6™6¤D¨£GÑ+¨aÑ/°4·6±6·8±8¸d¿f¹f¿h¹hÑ3FÑGÓHð
ˆð ×Ñ §¡Ó'¨8Ò3Ð3Ñ3r%   c                 ó¾  — | j                   j                  | j                  | j                  j                  | j                  j
                  z    «       | j                  j                  | j                  t        | j                  «      | j                  j                  z  t        | j                  «      dz   | j                  j
                  z  z
  «       | j                  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
  j                  «       dk(  sJ ‚y ©Nr+   r*   r   )r&   r[   r…   rE   r\   rp   r'   r   r˜   r   r†   r   r   r]   r   rV   s      r   rh   z-TestObstacleSetPathway.test_2D_pathway_length5  s4  € Ø�‰�‰˜Ÿ™ 4§6¡6§8¡8¨d¯f©f¯h©hÑ#6Ð!7Ô8Ø�‰�‰Ø�G‰G”S˜Ÿ™“[ 4§6¡6§8¡8Ñ+¬s°4·6±6«{¸Q©À$Ç&Á&Ç(Á(Ñ.JÑJô	
ð 	�‰�‰Ø�G‰G”S˜Ÿ™“[ 4§6¡6§8¡8Ñ+¬s°4·6±6«{¸Q©À$Ç&Á&Ç(Á(Ñ.JÑJô	
ô % T§W¡W¨d¯g©g°t·w±wÀÇÁÓHˆØ”t˜A“w‘;¤ a¨!¬C°·±«K©-Ñ&7Ó!8Ñ8ˆØ—‘ Ñ)×3Ñ3Ó5¸Ò:Ð:Ñ:r%   c                 ó   — | j                   j                  | j                  | j                  j                  | j                  j
                  z    «       | j                  j                  | j                  t        | j                  «      | j                  j                  z  t        | j                  «      dz   | j                  j
                  z  z
  «       | j                  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
  j                  «       dk(  sJ ‚y r    )r&   r[   r…   rE   r\   rp   r'   r   r˜   r   r†   r   r   r™   ra   r   rV   s      r   rj   z9TestObstacleSetPathway.test_2D_pathway_extension_velocityA  sL  € Ø�‰�‰˜Ÿ™ 4§6¡6§8¡8¨d¯f©f¯h©hÑ#6Ð!7Ô8Ø�‰�‰Ø�G‰G”S˜Ÿ™“[ 4§6¡6§8¡8Ñ+¬s°4·6±6«{¸Q©À$Ç&Á&Ç(Á(Ñ.JÑJô	
ð 	�‰�‰Ø�G‰G”S˜Ÿ™“[ 4§6¡6§8¡8Ñ+¬s°4·6±6«{¸Q©À$Ç&Á&Ç(Á(Ñ.JÑJô	
ô % T§W¡W¨d¯g©g°t·w±wÀÇÁÓHˆÜ˜1“g¤ D§F¡F£Ñ+¨d¯g©gÑ5Ð6¸!¼dÄ3ÀtÇvÁvÃ;ÐQRÁ?Ó>SÑ:SÑTˆØ×*Ñ*¨XÑ5×?Ñ?ÓAÀQÒFÐFÑFr%   c           
      ó”  — | j                   j                  | j                  | j                  j                  | j                  j
                  z    «       | j                  j                  | j                  t        | j                  «      | j                  j                  z  t        | j                  «      dz   | j                  j
                  z  z
  «       | j                  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#                  | j                  «      «      |k(  sJ ‚y )Nr+   r*   ro   )r&   r[   r…   rE   r\   rp   r'   r   r˜   r   r†   r   r   r   r	   rI   r   rd   )r#   rJ   ÚpO_pA_force_vecÚpA_pB_force_vecÚpB_pI_force_vecrW   s         r   rl   z/TestObstacleSetPathway.test_2D_pathway_to_loadsM  s‹  € Ø�‰�‰˜Ÿ™ 4§6¡6§8¡8¨d¯f©f¯h©hÑ#6Ð!7Ô8Ø�‰�‰Ø�G‰G”S˜Ÿ™“[ 4§6¡6§8¡8Ñ+¬s°4·6±6«{¸Q©À$Ç&Á&Ç(Á(Ñ.JÑJô	
ð 	�‰�‰Ø�G‰G”S˜Ÿ™“[ 4§6¡6§8¡8Ñ+¬s°4·6±6«{¸Q©À$Ç&Á&Ç(Á(Ñ.JÑJô	
ô % T§W¡W¨d¯g©g°t·w±wÀÇÁÓHˆÜ˜q›' A™+¨¯©¯©°D·F±F·H±HÑ)<Ñ=ˆä�1”s˜4Ÿ6™6“{‘? QÑ&Ó'Ð'¨!Ñ+¨d¯f©f¯h©hÑ6Ü�1‹gœ˜DŸF™F›Ñ# q¬4´°D·F±F³¸a±Ó+@Ñ'@ÑAÀDÇFÁFÇHÁHÑLñMð 	ô ˜dŸf™f¤r¨!¡t™mÓ,¨t¯v©v¯x©xÑ7¼#¸d¿f¹fÄrÈ!Át¹mÓ:LÈtÏvÉvÏxÉxÑ:WÑWˆä�$—'‘'˜4Ÿ6™6 OÑ3Ó4Ü�$—'‘'˜DŸF™F˜7 _Ñ4Ó5Ü�$—'‘'˜4Ÿ6™6 OÑ3Ó4Ü�$—'‘'˜DŸF™F˜7 _Ñ4Ó5Ü�$—'‘'˜4Ÿ6™6 OÑ3Ó4Ü�$—'‘'˜DŸF™F˜7 _Ñ4Ó5ð
ˆô ˜w×/Ñ/°·±Ó7Ó8¸HÒDÐDÑDr%   )ry   rz   r{   r$   r|   r8   r}   r~   r   r5   r�   r’   rS   rX   r   rš   r^   rb   rf   rh   rj   rl   )Ú.0r/   r   s   000r   r‚   r‚   ¿   sO  „ ò;ð Ø‡[�[×ÑØ&àÐ);×<Ð< ”�t•Ô<Ð=ØÐ)A×BÐB ”�t•ÔBÐCØÐ)G×HÐH ”�t•ÔHÐIØÐ)M×NÐN ”�t•ÔNÐOð		
óñ1óó ð1ð Ø‡[�[×ÑØÙ
�‹+ˆ™˜t›¡e¨D£kÐ2Ð3óñ1ó	ó ð
1ð Ø‡[�[×ÑØà‘5˜“;¡ d£Ð,Ù�4‹[˜$¡ d£Ð,Ù�4‹[™% ›+ tÐ,ð	
óñ.óó ð.ò	+ð Ø‡[�[×ÑØð *<×<Ð< ”�t•Ô<Ø0ðð
 *B×BÐB ”�t•ÔBØ4ðð
 *H×HÐH ”�t•ÔHØ8ðð	
óñ")ó#ó ð$)ð €V‡^�^˜DÔ!ñó "ðò1ò/ò4ò
;ò
GóEùôK =ùÜBùÜHùÜNùôb =ùô Cùô Is)   ¦G,ÁG3Á"G:Â HÅHÅ:HÆHr‚   c                   ó   — e Zd Zd„ Z ej
                  d¬«      d„ «       Zd„ Zej                  j                  d e
d«      f e
d«       e
d«       e
d	«      fg«      d
„ «       Zeej                  j                  dd e
d«      f e
d«      dfg«      d„ «       «       Zd„ Zej                  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                  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                  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                  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                  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                  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                  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#y)8ÚTestWrappingPathwayc                 ó0   — t        t        t        «      sJ ‚y r   )r!   r   r   r"   s    r   r$   z1TestWrappingPathway.test_is_pathway_base_subclassi  s   € Üœ/¬;Ô7Ð7Ñ7r%   TrB   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«      | _        y )	Nr&   r'   ÚrT)Úpositiver…   rE   rI   )r   r&   r'   r   r«   r…   r   rE   rq   Úaxr   Úspherer   Úcylinderr   rJ   rI   r"   s    r   Ú_wrapping_pathway_fixturez-TestWrappingPathway._wrapping_pathway_fixturel  s¥   € ä˜“+ˆŒÜ˜“+ˆŒÜ˜ dÔ+ˆŒÜ˜“+ˆŒÜ Ó$ˆŒØ—&‘&—(‘(ˆŒÜ$ T§V¡V¨T¯W©WÓ5ˆŒÜ(¨¯©°·±¸$¿'¹'ÓBˆŒÜ& t§w¡w°·±¸¿¹ÓGˆŒÜ˜“ˆ�r%   c                 óL  — 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 ‚y )Nr)   r*   r   r+   Úgeometry)r   r&   r'   r¯   r,   r-   r.   r)   r   r²   r   rR   s     r   r5   z*TestWrappingPathway.test_valid_constructory  s  € Ü" 4§7¡7¨D¯G©G°T·]±]ÓCˆÜ˜(¤OÔ4Ð4Ð4Ü�x Ô/Ð/Ð/Ü�8×'Ñ'Ó(¨AÒ-Ð-Ð-Ü˜(×.Ñ.¨qÑ1´5Ô9Ð9Ð9Ø×#Ñ# AÑ&¨$¯'©'Ò1Ð1Ð1Ü˜(×.Ñ.¨qÑ1´5Ô9Ð9Ð9Ø×#Ñ# AÑ&¨$¯'©'Ò1Ð1Ð1Ü�x Ô,Ð,Ð,Ü˜(×+Ñ+Ô-AÔBÐBÐBØ× Ñ  D§M¡MÒ1Ð1Ñ1r%   r)   r&   r'   r6   c                 óŽ   — t        j                  t        «      5  t        g |¢| j                  ‘­Ž }d d d «       y # 1 sw Y   y xY wr   )r8   r9   r@   r   r¯   )r#   r)   r<   s      r   r�   zITestWrappingPathway.test_invalid_constructor_attachments_incorrect_number†  s;   € ô �]‰]œ9Ó%ñ 	=ÜÐ< Ð<¨d¯m©mÒ<ˆA÷	=÷ 	=ñ 	=ús	   š;»ANc                 óp   — t        j                  t        «      5  t        | Ž }d d d «       y # 1 sw Y   y xY wr   r‘   r;   s     r   r’   zBTestWrappingPathway.test_invalid_constructor_attachments_not_point‘  s/   € ô �]‰]œ9Ó%ñ 	.Ü Ð-ˆA÷	.÷ 	.ñ 	.úr>   c                 ó    — t        j                  t        «      5  t        | j                  | j
                  «      }d d d «       y # 1 sw Y   y xY wr   ©r8   r9   r@   r   r&   r'   )r#   r<   s     r   Ú1test_invalid_constructor_geometry_is_not_suppliedzETestWrappingPathway.test_invalid_constructor_geometry_is_not_supplied�  s7   € Ü�]‰]œ9Ó%ñ 	2Ü §¡¨¯©Ó1ˆA÷	2÷ 	2ñ 	2ús   š!AÁAr²   r«   r˜   rE   c                 ó¢   — t        j                  t        «      5  t        | j                  | j
                  |«      }d d d «       y # 1 sw Y   y xY wr   r¶   )r#   r²   r<   s      r   Ú"test_invalid_geometry_not_geometryz6TestWrappingPathway.test_invalid_geometry_not_geometry¡  s;   € ô �]‰]œ9Ó%ñ 	<Ü §¡¨¯©°(Ó;ˆA÷	<÷ 	<ñ 	<ús   š"AÁAc                 óH  — t        j                  t        «      5  | j                  | j                  j
                  d<   d d d «       t        j                  t        «      5  | j                  | j                  j
                  d<   d d d «       y # 1 sw Y   ŒOxY w# 1 sw Y   y xY wrP   )r8   r9   r@   r'   rJ   r)   r&   r"   s    r   Ú&test_attachments_property_is_immutablez:TestWrappingPathway.test_attachments_property_is_immutable®  sy   € Ü�]‰]œ9Ó%ñ 	2Ø*.¯'©'ˆD�L‰L×$Ñ$ QÑ'÷	2ä�]‰]œ9Ó%ñ 	2Ø*.¯'©'ˆD�L‰L×$Ñ$ QÑ'÷	2ð 	2÷	2ð 	2ú÷	2ð 	2ús   š$BÁ$BÂBÂB!c                 ó‚   — t        j                  t        «      5  d | j                  _        d d d «       y # 1 sw Y   y xY wr   )r8   r9   rQ   rJ   r²   r"   s    r   Ú#test_geometry_property_is_immutablez7TestWrappingPathway.test_geometry_property_is_immutable´  s/   € Ü�]‰]œ>Ó*ñ 	)Ø$(ˆD�L‰LÔ!÷	)÷ 	)ñ 	)ús   š5µ>c                 óX   — d| j                   ›d�}t        | j                  «      |k(  sJ ‚y )Nz!WrappingPathway(pA, pB, geometry=ú))r¯   rU   rJ   re   s     r   rX   zTestWrappingPathway.test_repr¸  s6   € ðØŸ™Ð(¨ð+ð 	ô �D—L‘LÓ! XÒ-Ð-Ñ-r%   c                 ó:   — t        d„ t        | |«      D «       «      S )Nc              3   ó,   K  — | ]  \  }}||z  –— Œ y ­wr   r€   ©r¦   ÚmagÚunits      r   ú	<genexpr>z9TestWrappingPathway._expand_pos_to_vec.<locals>.<genexpr>Á  s   è ø€ Ò?¡  d�3�t•8Ñ?ùó   ‚)Ú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„   ro   r+   c                 óî  — | j                  || j                  «      }| j                  || j                  «      }| j                  j                  | j                  | j
                  |z  «       | j                  j                  | j                  | j
                  |z  «       t        | j                  | j                  | j                  «      }|| j
                  z  }t        |j                  |z
  «      dk(  sJ ‚y r�   )rË   rE   r&   r[   r…   r«   r'   r   r®   r   r]   ©r#   ÚpA_vecÚpB_vecÚfactorrJ   rW   s         r   Ú$test_static_pathway_on_sphere_lengthz8TestWrappingPathway.test_static_pathway_on_sphere_lengthÃ  s¯   € ð ×(Ñ(¨°·±Ó8ˆØ×(Ñ(¨°·±Ó8ˆØ�‰�‰˜Ÿ™ §¡¨¡Ô/Ø�‰�‰˜Ÿ™ §¡¨¡Ô/Ü! $§'¡'¨4¯7©7°D·K±KÓ@ˆØ˜$Ÿ&™&‘=ˆÜ˜Ÿ™¨Ñ1Ó2°aÒ7Ð7Ñ7r%   ©r”   r   r   r‡   c                 ó  — | j                  || j                  «      }| j                  || j                  «      }| j                  j                  | j                  | j
                  |z  «       | j                  j                  | j                  | j
                  |z  «       t        | j                  | j                  | j                  «      }|t        | j
                  dz  «      z  }t        |j                  |z
  «      dk(  sJ ‚y r`   )rË   rE   r&   r[   r…   r«   r'   r   r¯   r   r   r]   rÏ   s         r   Ú&test_static_pathway_on_cylinder_lengthz:TestWrappingPathway.test_static_pathway_on_cylinder_lengthÔ  s¸   € ð* ×(Ñ(¨°·±Ó8ˆØ×(Ñ(¨°·±Ó8ˆØ�‰�‰˜Ÿ™ §¡¨¡Ô/Ø�‰�‰˜Ÿ™ §¡¨¡Ô/Ü! $§'¡'¨4¯7©7°D·M±MÓBˆØœ$˜tŸv™v q™y›/Ñ)ˆÜ˜Ÿ™¨Ñ1Ó2°aÒ7Ð7Ñ7r%   zpA_vec, pB_vec)rÌ   rÍ   c                 ó¸  — | j                  || j                  «      }| j                  || j                  «      }| j                  j                  | j                  | j
                  |z  «       | j                  j                  | j                  | j
                  |z  «       t        | j                  | j                  | j                  «      }|j                  dk(  sJ ‚y r�   )
rË   rE   r&   r[   r…   r«   r'   r   r®   ra   ©r#   rÐ   rÑ   rJ   s       r   Ú0test_static_pathway_on_sphere_extension_velocityzDTestWrappingPathway.test_static_pathway_on_sphere_extension_velocityñ  sš   € ð ×(Ñ(¨°·±Ó8ˆØ×(Ñ(¨°·±Ó8ˆØ�‰�‰˜Ÿ™ §¡¨¡Ô/Ø�‰�‰˜Ÿ™ §¡¨¡Ô/Ü! $§'¡'¨4¯7©7°D·K±KÓ@ˆØ×)Ñ)¨QÒ.Ð.Ñ.r%   )rÌ   rÔ   )rÔ   rÌ   c                 ó¸  — | j                  || j                  «      }| j                  || j                  «      }| j                  j                  | j                  | j
                  |z  «       | j                  j                  | j                  | j
                  |z  «       t        | j                  | j                  | j                  «      }|j                  dk(  sJ ‚y r�   )
rË   rE   r&   r[   r…   r«   r'   r   r¯   ra   rØ   s       r   Ú2test_static_pathway_on_cylinder_extension_velocityzFTestWrappingPathway.test_static_pathway_on_cylinder_extension_velocity  sš   € ð ×(Ñ(¨°·±Ó8ˆØ×(Ñ(¨°·±Ó8ˆØ�‰�‰˜Ÿ™ §¡¨¡Ô/Ø�‰�‰˜Ÿ™ §¡¨¡Ô/Ü! $§'¡'¨4¯7©7°D·M±MÓ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                  j                  | j                  | j
                  |z  «       | j                  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                  | j                  «      |k(  sJ ‚y )Nc              3   ó,   K  — | ]  \  }}||z  –— Œ y ­w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  –— Œ y ­wr   r€   rÂ   s      r   rÅ   zMTestWrappingPathway.test_static_pathway_on_sphere_to_loads.<locals>.<genexpr>:  rÞ   rÆ   c              3   ó,   K  — | ]  \  }}||z  –— Œ y ­wr   r€   rÂ   s      r   rÅ   zMTestWrappingPathway.test_static_pathway_on_sphere_to_loads.<locals>.<genexpr>=  rÞ   rÆ   r„   r‰   )rË   rE   r&   r[   r…   r«   r'   r   r®   rÇ   rÈ   r	   rI   r   rd   )r#   rÐ   rÑ   ÚpA_vec_expectedÚpB_vec_expectedÚpO_vec_expectedrJ   rW   s           r   Ú&test_static_pathway_on_sphere_to_loadsz:TestWrappingPathway.test_static_pathway_on_sphere_to_loads  s·  € ð8 ×(Ñ(¨°·±Ó8ˆØ×(Ñ(¨°·±Ó8ˆØ�‰�‰˜Ÿ™ §¡¨¡Ô/Ø�‰�‰˜Ÿ™ §¡¨¡Ô/Ü! $§'¡'¨4¯7©7°D·K±KÓ@ˆäñ 
Ü(+¨O¸T¿V¹VÓ(Dô
ó 
ˆô ñ 
Ü(+¨O¸T¿V¹VÓ(Dô
ó 
ˆô ñ 
Ü(+¨O¸T¿V¹VÓ(Dô
ó 
ˆô �$—'‘'˜4Ÿ6™6 4§6¡6¨1¡9¬T°$·&±&¸!±)«_Ñ#<Ñ=¸oÑMÓNÜ�$—'‘'˜4Ÿ6™6 4§6¡6¨1¡9¬T°$·&±&¸!±)«_Ñ#<Ñ=¸oÑMÓNÜ�$—'‘'˜4Ÿ6™6 4§6¡6¨1¡9¬T°$·&±&¸!±)«_Ñ#<Ñ=¸oÑMÓNð
ˆð
 ×Ñ §¡Ó'¨8Ò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                  j                  | j                  | j
                  |z  «       | j                  j                  | j                  | j
                  |z  «       t        | j                  | j                  | j                  «      }| j                  | j                  || j                  «      z  }| j                  | j                  || j                  «      z  }| j                  | j                  || j                  «      z  }	t        | j                  |«      t        | j                  |«      t        | j                  |	«      g}
t        |j                  | j                  «      «      |
k(  sJ ‚y r   )rË   rE   r&   r[   r…   r«   r'   r   r¯   rI   r	   r   rd   )r#   rÐ   rÑ   rá   râ   rã   rJ   ÚpA_force_expectedÚpB_force_expectedÚpO_force_expectedrW   s              r   Ú(test_static_pathway_on_cylinder_to_loadsz<TestWrappingPathway.test_static_pathway_on_cylinder_to_loadsG  sV  € ðj ×(Ñ(¨°·±Ó8ˆØ×(Ñ(¨°·±Ó8ˆØ�‰�‰˜Ÿ™ §¡¨¡Ô/Ø�‰�‰˜Ÿ™ §¡¨¡Ô/Ü! $§'¡'¨4¯7©7°D·M±MÓBˆà ŸF™F 4×#:Ñ#:¸?Ø;?¿6¹6ó$Cñ CÐà ŸF™F 4×#:Ñ#:¸?Ø;?¿6¹6ó$Cñ CÐà ŸF™F 4×#:Ñ#:¸?Ø;?¿6¹6ó$Cñ CÐô �$—'‘'Ð,Ó-Ü�$—'‘'Ð,Ó-Ü�$—'‘'Ð,Ó-ð
ˆô
 ˜w×/Ñ/°·±Ó7Ó8¸HÒ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                  | j                  |«       | j                  t        |dz  «      z  }t        | j                  j                  |z
  «      dk(  sJ ‚y )Nr˜   r*   r   )r   r«   rE   r\   r   r   rp   r&   r[   r…   r'   r   r   rJ   r]   )r#   r˜   ÚpA_posÚpB_posrW   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¸1Ò<Ð<Ñ<r%   c                 óD  — 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                  | j                  |«       | j                  t        |dz  «      |z  z  |z  }t        | j                  j                  |z
  «      dk(  sJ ‚y )Nr˜   r+   r*   r   )r   r«   rE   r\   r   r   rp   r&   r[   r…   r'   r   r   rJ   ra   )r#   r˜   r™   rñ   rò   rW   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Ñ7¸(ÑBÓCÀqÒHÐHÑHr%   c                 ó  — t        d«      }| j                  | j                  j                  z  }| j                  t	        |«      | j                  j                  z  t        |«      | j                  j                  z  z   z  }| j                  j                  | 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                  | j                  «      «      }||k(  sJ ‚y )Nr˜   r+   )r   r«   rE   r\   r   r   rp   r&   r[   r…   r'   rI   r	   r   rJ   rd   )	r#   r˜   rñ   rò   ÚpA_forceÚpB_forcerv   rW   r   s	            r   Ú$test_2D_pathway_on_cylinder_to_loadsz8TestWrappingPathway.test_2D_pathway_on_cylinder_to_loads¢  sa  € Ü˜3ÓˆØ—‘˜Ÿ™Ÿ™‘ˆØ—‘œ˜Q› §¡§¡™¬3¨q«6°$·&±&·(±(©?Ñ:Ñ;ˆØ�‰�‰˜Ÿ™ Ô(Ø�‰�‰˜Ÿ™ Ô(à—6‘6˜$Ÿ&™&Ÿ(™(‘?ˆØ—6‘6œ3˜q›6 $§&¡&§(¡(™?¬S°«V°D·F±F·H±H©_Ñ<Ñ=ˆØ—6‘6œC ›F˜7 4§6¡6§8¡8Ñ+¬s°1«v¸©z¸4¿6¹6¿8¹8Ñ.CÑCÑDˆä�$—'‘'˜8Ó$Ü�$—'‘'˜8Ó$Ü�$—'‘'˜8Ó$ð
ˆô   §¡× 5Ñ 5°d·f±fÓ =Ó>ˆØ˜Ò Ð Ñ r%   )$ry   rz   r{   r$   r8   r   r°   r5   r}   r~   r   r�   r|   r’   r·   r   r   r   r\   r¹   r»   r½   rX   rË   r   r   r   rÓ   rÖ   rÙ   rÛ   rä   rï   ró   rõ   rù   r€   r%   r   r¨   r¨   g  sÃ  „ ò8ð €V‡^�^˜DÔ!ñ
ó "ð
ò2ð ‡[�[×ÑØá�4‹[ˆOÙ�4‹[™% ›+¡u¨T£{Ð3ð	
óñ=óð=ð Ø‡[�[×ÑØà‘5˜“;ÐÙ�4‹[˜$Ðð	
óñ.óó ð.ò2ð ‡[�[×ÑØá�3‹KÙ˜3ÓÙ˜3ÓÙ˜3Ó×!Ñ!ð		
óñ<óð<ò2ò)ò.ð ñ@ó ð@ð ‡[�[×ÑØ à˜	 2 a¡4Ð(Ø™˜a› ™¡T¨!£W H¨Q¡J°Ð2°A°b±D¸±FÐ;Ø™ ! Q›©¨a«°©°AÐ6¸¸1¹Ð=ð	
óñ8óð8ð ‡[�[×ÑØ à˜	¡8¨A¨q£>°"Ñ#4Ð5Ø˜
 BÐ'Ø˜ BÐ'Ø™˜a› ™¡T¨!£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ðð Ù˜!˜Q“¡ a£©°!°Q«Ñ!7¸Ð;Ù�Q™( 1 a›.¨Ñ+¨aÑ/Ñ/Ó0ðð	
óñ(8ó)ð(8ð ‡[�[×ÑØà"Ø™˜a›¡¨!¨Q£Ñ/±$°q³'°¹(À1Àa».Ñ1HÈ!ÐLÐMØ™ ! Q›©¨a«±¸!¸Q³Ñ)?ÀÐCÐDð	
óñ/óð/ð ‡[�[×ÑØà"Ø#Ø#Ø™˜a› ™¡T¨!£W H¨Q¡J°Ð2Ð3Ø™ ! Q›©¨a«°©°AÐ6Ð7Ø™˜a›¡¨!¨Q£Ñ/±$°q³'°¸!±¸QÐ?Ð@Ø™ ! Q›©¨a«°©°AÐ6Ð7ð	
óñ/óð/ð ‡[�[×ÑØKàEàÙ�a“˜‘™T !›W˜H Q™J¨Ð*ØÙ�a“˜‘™D ›G A™I qÐ)Ø‘d˜1“g˜a‘i‘¡$ q£' ¨!¡¨QÐ/ðð Ù˜!˜Q“¡ a£¨¡¨AÐ.ØÙ�a“˜‘™X a¨›^˜O¨QÐ/Ù�q“'�˜!‘™X a¨›^¨aÑ/°Ð3ðð	
óñ(4ó)ð(4ð< ‡[�[×ÑØKàEØEØFàÙ�a“˜‘™T !›W˜H Q™J¨Ð*ØÙ�q“'�˜!‘™d 1›g˜X a™Z¨Ð+Ø‘T˜!“W˜Q‘Y‘¡ Q£¨¡	¨1Ð-ðð Ù˜!˜Q“¡ a£¨¡¨AÐ.ØÙ�a“˜‘™X a¨›^˜O¨QÐ/Ù�q“'�˜!‘™X a¨›^¨aÑ/°Ð3ðð Ù�a“˜‘™D ›G A™I qÐ)ØÙ�a“˜‘™T !›W˜H Q™J¨Ð*Ù�q“'�˜!‘™T !›W Q™Y¨™]¨AÐ.ðð EàÙ�a“˜‘™T !›W˜H Q™J¨Ð*Ø�B‘‘t˜B  B¨¡E¡™MÓ*Ñ*¨A¨q±°b¸2¸bÀ!¹e¹8±mÓ1DÑ/DÐEà‘t˜A“w‘J˜r‘M 1¡T¨"¨r°"°a±%©x©-Ó%8Ñ#8Ñ9Ø‘t˜A“w‘J˜r‘M 1¡T¨"¨r°"°a±%©x©-Ó%8Ñ#8Ñ9Ø‘t˜B  B¨¡E¡™MÓ*Ñ*ðð ‘t˜A“w ‘{‘O BÑ&¨©$¨r°B°r¸1±u±H©}Ó*=Ñ(=Ñ>Ø‘d˜1“g‘I˜b‘L !¡D¨¨b°°Q±©h©Ó$7Ñ"7Ñ8Øððð5)	
ó,ñZEó[,ðZEò6=òIó!r%   r¨   )Ú__doc__r8   Ú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9÷veEñ eE÷PL!ò L!r%   