U
    ZÊ¹jí0  ã                   @   s°   d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
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 d dlmZ d dlmZ d	d
„ Zdd„ Zdd„ ZdS )é    )ÚRationalÚpi)ÚS)ÚDummyÚsymbols)Úsqrt)ÚasinÚcosÚsin)
ÚLineÚPointÚRayÚSegmentÚPoint3DÚLine3DÚRay3DÚ	Segment3DÚPlaneÚCircle)Úare_coplanar)Úraisesc               	      sÖ  t ddd�\} }}}}tdddƒ‰tdddƒ}tdddƒ}tˆ||ƒ}tˆdd	�}tˆ|ƒ}	t|d
d	�}
ttdddƒdd	�}ttdddƒdd	�}tˆdd	�}tˆdd	�}tˆdd	�}t|dd	�}ttdddƒtdddƒƒ}ttdddƒtdddƒƒ}ttdddƒtdddƒƒ}tt‡fdd„ƒ tˆ||ƒtˆ||ƒk�s>t‚tˆ||ƒ tˆ||ƒ¡�s^t‚tˆ||ƒ ˆ¡�svt‚tˆ||ƒ tˆdƒ¡dk�s˜t‚tˆdd	� tˆdƒ¡�s¶t‚|ttdddƒdd	�k�sÔt‚||k�sât‚||	k�sðt‚|
ttdddƒd
d	�k�st‚|
 	| ||¡| d|  d|  d k�s:t‚| 	| ||¡| d|  | k�s^t‚|j
ˆk�snt‚|j
ˆk�s~t‚|
j
|k�sŽt‚|jdk�sžt‚|
jd
k�s®t‚ˆ|k�s¼t‚ˆ|k�sÊt‚||
k�sØt‚| tddƒ¡ˆk�sòt‚| tdddƒ¡‰ ˆ ttddƒtddƒtddƒƒk�s,t‚ˆ |k�s:t‚| ttddƒtddƒƒ¡}|ttdddƒttddƒtddƒtddƒƒƒk�sŒt‚||k�sšt‚tƒ }| ¡ }| |¡ |¡}t| |d¡| |d¡ƒ}|j
|k�rê|j|k�sît‚| |¡ |¡�st‚| ttddƒtddƒƒ¡tttddƒtddƒtddƒƒttddƒtddƒtddƒƒƒk�sdt‚| ttddƒtddƒƒ¡tttddƒtddƒtddƒƒttddƒtddƒtddƒƒƒk�sÄt‚| |j¡| |¡k�sàt‚| |¡dk�sôt‚| |¡�st‚| tˆ|ƒ¡�st‚| |¡dk�s.t‚| |¡�s>t‚| |¡�sNt‚| |¡�s^t‚| |¡dk�srt‚| |¡dk�s†t‚| tddƒ¡�sœt‚| d ¡dk�s°t‚| | ||¡¡dk�sÌt‚| | ||¡¡dk�sèt‚| | |¡¡dk�st‚| | |¡¡dk�st‚|j
 | |¡¡  ¡ dk�s<t‚|j
 | |¡¡  ¡ dk�s\t‚| |¡tt!d!ƒ t"|ƒ d! dt!dƒ t#|ƒ d  t!d!ƒt"|ƒ d" t!dƒt#|ƒ d  t!d!ƒt"|ƒ d ƒk�sÖt‚| ||¡td| | |d|  d| ƒk�st‚| tdddƒ¡dt!dƒ d k�s0t‚| tdddƒ¡d#t!dƒ k�sTt‚| |j
¡dk�sjt‚| |¡dk�s~t‚| |¡dk�s’t‚| ttdddƒtddd#ƒƒ¡| tddd#ƒ¡  k�ràd#t!dƒ d k�sæn t‚| ttddd#ƒtdddƒƒ¡| tdddƒ¡  k�r4dt!dƒ d k�s:n t‚| ttdddƒtdddƒƒ¡dk�sdt‚| ttdddƒtdddƒƒ¡dk�sŽt‚| ttdddƒtd$dd%ƒƒ¡| tdddƒ¡  k�rÜdt!dƒ d k�sân t‚| ttdddƒd&d	�¡t!dƒk�	s
t‚| ttddd#ƒddd$gd'�¡d#t!dƒ d k�	s@t‚| ttdddƒdddgd'�¡dk�	sjt‚| $|¡t%d k�	s‚t‚| $|¡dk�	s–t‚| $|¡dk�	sªt‚| $ttdddƒtdd#dƒƒ¡t&t!dƒd ƒ k�	sât‚| $ttdd#dƒtdddƒƒ¡t&t!dƒd ƒk�
st‚| $ttdddƒtddd#ƒƒ¡t&dt!d(ƒ d( ƒk�
sRt‚t'|||ƒdk�
sht‚t'|ƒdk�
szt‚t'tdddƒtdddƒtdddƒtdddƒƒ�
s®t‚t'tˆ||ƒtˆ||ƒƒ�
sÎt‚t (|||
¡dk�
sæt‚t (|¡dk�
sút‚ttd)d„ ƒ ttd*d„ ƒ | )tdddƒ¡ttdddƒdd	�k�sBt‚tdd+ƒ‰ ˆ  *¡ ttdddƒd,ƒk�slt‚ˆ  *tdddƒ¡ttdddƒd,ƒk�s–t‚ˆ  *d-d¡ttdddƒd.ƒk�sºt‚tt‡ fd/d„ƒ tdddƒtdddƒ }}d}t||d	�‰ ˆ  *||¡t|d+ƒk�st‚t|Ž }ˆ  *||¡t|d0ƒk�s6t‚t||jd	� *||| ¡ttdddƒd+ƒk�sht‚t||d	� *||| ¡ttdddƒd0ƒk�s˜t‚t||jd	� *||| ¡ttdddƒd+ƒk�sÊt‚t|dd	�‰ ˆ  *¡ t|d+d	�k�sðt‚| +|¡|gk�st‚| +|j
¡|j
gk�s t‚| +|¡ttd1d#dƒtdd#dƒƒgk�sLt‚| +ttddd#ƒtd#d#dƒƒ¡tdtd1dƒtddƒƒgk�sŒt‚| +ttdddƒd2d	�¡ttd3d4dƒtd5d6dƒƒgk�sÈt‚| +ttdddƒtddd#ƒƒ¡tdddƒgk�süt‚| +ttdddƒtddd#ƒƒ¡g k�s&t‚| +ttddƒtd#dƒƒ¡ttddƒtdd#ƒdƒgk�sbt‚ttddƒtd#dƒƒ}td7dd	� +|¡ttddƒtd#dƒƒgk�s¨t‚| +|¡ttdddƒtd8ddƒƒgk�sÔt‚| +|¡ttdddƒtdddƒƒgk�s t‚| +|¡ttdddƒtdddƒƒgk�s,t‚| +|¡g k�s@t‚| +|¡ttdddƒtd8ddƒƒgk�slt‚| +|¡ttdddƒtd8dd4ƒƒgk�s˜t‚| ¡ |k�sªt‚|jdd9�|k�sÀt‚| +|j
¡d  |j
¡�sÞt‚| +|¡d  ttd1d#dƒtdd#dƒƒ¡�st‚td7dd	�}| +tˆd:ƒ¡d  tdd;ƒ¡�s@t‚| +tˆd:ƒ¡d  tdd:ƒ¡�sft‚| +tˆd<ƒ¡d  tˆd<ƒ¡�sŒt‚| +tˆd=d	�¡d  |¡�s®t‚| +tˆdd	�¡d  tˆd>t% ddfd'�¡�sât‚| +tˆd?d	�¡d  tˆd@d'�¡�st‚| +tˆdAd	�¡d  tˆdBd'�¡�s6t‚| +tˆdCd	�¡d  tˆdDd'�¡�s`t‚| ¡ |k�srt‚t,| +ttdddƒtdddƒƒ¡ƒdk�s t‚| +|¡d  |¡�sºt‚| tˆdd	�¡dk�sÖt‚| |¡�sæt‚| tˆdEd	�¡�sþt‚| tˆddd4t!dƒ fd	�¡�s$t‚| ˆ¡dk�s8t‚tttdFdGƒtdHdIƒtdJdKƒƒttdFdLƒtdMdNƒtdJdKƒƒƒ}tttdOdKƒtdPdKƒtdQdKƒƒt-dRƒ t-dSƒ t-dTƒfƒ}t.dUdV„ | +|¡D ƒƒdWk�sÒt‚d S )XNz	x y z u vT)Úrealr   é   é   é   ©r   r   r   ©Únormal_vector©r   r   r   é   )r   r   r   éûÿÿÿiúÿÿÿ)r   éþÿÿÿr   ©r   r   r   )r   é   r   )r!   r   r   é   éÿÿÿÿr!   é	   c                      s   t ˆ ˆ ˆ ƒS )N©r   © )Úp1r(   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/geometry/tests/test_plane.pyÚ<lambda>   ó    ztest_plane.<locals>.<lambda>Fé   é   é   é   é
   ©r   r   r   )r   r   é   é   é   éýÿÿÿé   )é   r8   r8   )Zdirection_ratioéö   c                   S   s   t  tdddƒ¡S )Nr   )r   Úare_concurrentr   r(   r(   r(   r*   r+   ‰   r,   c                   S   s   t ddd�S )Nr   r2   r   r'   r(   r(   r(   r*   r+   Š   r,   ©r   r   r   )r   r   r   ©r   r   r   )r   r   r%   c                      s   ˆ   ddd¡S )Nr<   r   )r   r   r   )Úperpendicular_planer(   )Úpr(   r*   r+   š   r,   )r%   r   r   r8   )r   r    r   ièÿÿÿéôÿÿÿiçÿÿÿióÿÿÿ)r   r   r   r#   )Úseed)r   r#   r   )gš™™™™™¹?g333333ó?r   )é   r   r   )r   r   ép   rB   )r/   r   r   )r   éõÿÿÿr   )r   r   r/   )r   r/   r   )r%   r%   rC   )r   r%   r   )r   r   r?   l   q,æ5 l    PrN0lüÿÿÿ³6/Ï, l     �Iú5 l   AP”<IK l    @ô Ìk l     zæ5 lüÿÿÿAÍk3+ l     cR~ l   muJ9 lüÿÿÿ½1š³a l   Ån!c° z9.00000087501922z4.81170658872543e-13z0.0c                 S   s   g | ]}|  d ¡‘qS )r   )Ún)Ú.0Úir(   r(   r*   Ú
<listcomp>ò   s     ztest_plane.<locals>.<listcomp>z[Point3D(4.0, -0.89, 2.3)])/r   r   r   r   r   Ú
ValueErrorÚAssertionErrorZis_coplanarr   Zequationr)   r   Ú
projectionr   r   Zprojection_liner   r   Zrandom_pointZperpendicular_lineZarbitrary_pointr   ÚsubsÚp2Úequalsr   r   r   ÚargsZis_parallelZis_perpendicularZdistanceÚsimplifyr   r
   r	   Zangle_betweenr   r   r   r:   Zparallel_planer=   ÚintersectionÚlenr   Ústr)ÚxÚyÚzÚuÚvrL   Úp3Zpl3Zpl4Zpl4bZpl5Úpl6Zpl7Zpl8Zpl9Zpl10Zpl11Úl1Úl2Úl3ÚlÚtÚrÚaÚsÚbÚZrD   r(   )r>   r)   r*   Ú
test_plane   sÖ   
 ",$(6<ÿ
<ÿ
  ÿ& ÿ2($ÿ
ÿÿ
ÿ**ÿ
ÿ(6*ÿ
ÿ
ÿ

 
ÿ
 ÿ
 ÿ

ÿ
ÿ
ÿ
ÿ
ÿÿÿ

ÿ*ÿÿ,,,,,0&&&"ÿ

ÿ

ÿ

ÿ
.&þ
þýþÿýÿrd   c                  C   sº   t tdddƒdd�} tddƒ}|  |¡ttddƒtddƒtddƒƒksJt‚tddƒtddƒ }}d}t ||d�}| ||¡t tdddƒd	ƒks’t‚t d
ddƒ d¡tdddƒgks¶t‚d S )Nr   r   r   r   r$   r   r   r"   r;   )r   r   r   )r   r   r   )r   r   r   )r   r   )r   r   r   rJ   r   rI   r=   rP   )ÚArb   r`   rc   r>   r(   r(   r*   Útest_dimension_normalizationö   s    
,"ÿÿrf   c                     sÜ   t dƒ\‰} }tdddƒtdddƒtdddƒ  }}}t|||ƒ‰ ˆ  dˆ¡ˆtdtdƒ d ƒiksjt‚ˆ  d| |¡| d|diksˆt‚ˆ  |ˆ¡|ksœt‚tt‡ ‡fdd	„ƒ tt‡ ‡fd
d	„ƒ tt‡ ‡fdd	„ƒ d S )Nzt, u vr   r   ©r   r6   r   r   r0   r   c                      s   ˆ   dˆ¡S )Nr;   ©Úparameter_valuer(   ©r>   r^   r(   r*   r+   
  r,   z&test_parameter_value.<locals>.<lambda>c                      s   ˆ   ttddƒtddƒƒˆ¡S )Nr   r   )ri   r   r   r(   rj   r(   r*   r+     r,   c                      s   ˆ   dˆd¡S )Nrg   r   rh   r(   rj   r(   r*   r+     r,   )	r   r   r   ri   r   r   rI   r   rH   )rV   rW   r)   rL   rX   r(   rj   r*   Útest_parameter_value  s    ((rk   N) Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r	   r
   Zsympy.geometryr   r   r   r   r   r   r   r   r   r   Zsympy.geometry.utilr   Zsympy.testing.pytestr   rd   rf   rk   r(   r(   r(   r*   Ú<module>   s   0 l