o
    à8Va50  ã                   @   s   d dl mZmZmZ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 d dlmZ d dlmZ dd„ Zdd„ Zd	d
„ ZdS )é    )	ÚDummyÚSÚsymbolsÚpiÚsqrtÚasinÚsinÚcosÚRational)
Ú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žJ ‚tˆ||ƒ tˆ||ƒ¡s­J ‚tˆ||ƒ ˆ¡s¸J ‚tˆ||ƒ tˆdƒ¡du sÈJ ‚tˆdd	 tˆdƒ¡sÖJ ‚|ttdddƒdd	ksäJ ‚||ksêJ ‚||	ksðJ ‚|
ttdddƒd
d	ksþJ ‚|
 | ||¡| d|  d|  d ksJ ‚| | ||¡| d|  | ks&J ‚|j	ˆks.J ‚|j	ˆks6J ‚|
j	|ks>J ‚|j
dksFJ ‚|
j
d
ksNJ ‚ˆ|v sUJ ‚ˆ|v s\J ‚||
v scJ ‚| tddƒ¡ˆkspJ ‚| tdddƒ¡‰ ˆ ttddƒtddƒtddƒƒksJ ‚ˆ |v s”J ‚| ttddƒtddƒƒ¡}|ttdddƒttddƒtddƒtddƒƒƒks½J ‚||v sÄJ ‚tƒ }| ¡ }| |¡ |¡}t| |d¡| |d¡ƒ}|j	|vrì|j|vsîJ ‚| |¡ |¡sùJ ‚| 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)J ‚| 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sYJ ‚| |j¡| |¡ksgJ ‚| |¡du sqJ ‚| |¡syJ ‚| tˆ|ƒ¡s„J ‚| |¡du sŽJ ‚| |¡s–J ‚| |¡sžJ ‚| |¡s¦J ‚| |¡du s°J ‚| |¡du sºJ ‚| tddƒ¡sÅJ ‚| d ¡du sÏJ ‚| | ||¡¡dksÝJ ‚| | ||¡¡dksëJ ‚| | |¡¡dksøJ ‚| | |¡¡dksJ ‚|j	 | |¡¡ ¡ dksJ ‚|j	 | |¡¡ ¡ dks%J ‚| |¡tt d!ƒ t!|ƒ d! dt dƒ t"|ƒ d  t d!ƒt!|ƒ d" t dƒt"|ƒ d  t d!ƒt!|ƒ d ƒksbJ ‚| ||¡td| | |d|  d| ƒks{J ‚| tdddƒ¡dt dƒ d ksJ ‚| tdddƒ¡d#t dƒ ks¡J ‚| |j	¡dks¬J ‚| |¡dks¶J ‚| |¡dksÀJ ‚| ttdddƒtddd#ƒƒ¡| tddd#ƒ¡  krèd#t dƒ d ksëJ ‚ J ‚| ttddd#ƒtdddƒƒ¡| tdddƒ¡  krdt dƒ d ksJ ‚ J ‚| ttdddƒtdddƒƒ¡dks+J ‚| ttdddƒtdddƒƒ¡dks@J ‚| ttdddƒtd$dd%ƒƒ¡| tdddƒ¡  krhdt dƒ d kskJ ‚ J ‚| ttdddƒd&d	¡t dƒksJ ‚| ttddd#ƒg d'¢d(¡d#t dƒ d ks™J ‚| ttdddƒg d)¢d(¡dks­J ‚| #|¡t$d ks¹J ‚| #|¡dksÃJ ‚| #|¡dksÍJ ‚| #ttdddƒtdd#dƒƒ¡t%t dƒd ƒ kséJ ‚| #ttdd#dƒtdddƒƒ¡t%t dƒd ƒksJ ‚| #ttdddƒtddd#ƒƒ¡t%dt d*ƒ d* ƒks!J ‚t&|||ƒdu s,J ‚t&|ƒdu s5J ‚t&tdddƒtdddƒtdddƒtdddƒƒsOJ ‚t&tˆ||ƒtˆ||ƒƒs_J ‚t '|||
¡du skJ ‚t '|¡du suJ ‚ttd+d„ ƒ ttd,d„ ƒ | (tdddƒ¡ttdddƒdd	ks™J ‚tdd-ƒ‰ ˆ  )¡ ttdddƒd.ƒks®J ‚ˆ  )tdddƒ¡ttdddƒd.ƒksÃJ ‚ˆ  )d/d¡ttdddƒd0ƒksÕJ ‚tt‡ fd1d„ƒ tdddƒtdddƒ}}d}t||d	‰ ˆ  )||¡t|d-ƒksJ ‚t|Ž }ˆ  )||¡t|d2ƒksJ ‚t||jd	 )||| ¡ttdddƒd-ƒks,J ‚t||d	 )||| ¡ttdddƒd2ƒksDJ ‚t||jd	 )||| ¡ttdddƒd-ƒks]J ‚t|dd	‰ ˆ  )¡ t|d-d	kspJ ‚| *|¡|gks{J ‚| *|j	¡|j	gksˆJ ‚| *|¡ttd3d#dƒtdd#dƒƒgksžJ ‚| *ttddd#ƒtd#d#dƒƒ¡tdtd3dƒtddƒƒgks¾J ‚| *ttdddƒd4d	¡ttd5d6dƒtd7d8dƒƒgksÜJ ‚| *ttdddƒtddd#ƒƒ¡tdddƒgksöJ ‚| *ttdddƒtddd#ƒƒ¡g ksJ ‚| *ttddƒtd#dƒƒ¡ttddƒtdd#ƒdƒgks)J ‚ttddƒtd#dƒƒ}td9dd	 *|¡ttddƒtd#dƒƒgksLJ ‚| *|¡ttdddƒtd:ddƒƒgksbJ ‚| *|¡ttdddƒtdddƒƒgksxJ ‚| *|¡ttdddƒtdddƒƒgksŽJ ‚| *|¡g ks˜J ‚| *|¡ttdddƒtd:ddƒƒgks®J ‚| *|¡ttdddƒtd:dd6ƒƒgksÄJ ‚| ¡ |v sÍJ ‚|jdd;|v sØJ ‚| *|j	¡d  |j	¡sçJ ‚| *|¡d  ttd3d#dƒtdd#dƒƒ¡sÿJ ‚td9dd	}| *tˆd<ƒ¡d  tdd=ƒ¡sJ ‚| *tˆd<ƒ¡d  tdd<ƒ¡s+J ‚| *tˆd>ƒ¡d  tˆd>ƒ¡s>J ‚| *tˆd?d	¡d  |¡sOJ ‚| *tˆdd	¡d  tˆd@t$ ddfd(¡siJ ‚| *tˆdAd	¡d  tˆdBd(¡s~J ‚| *tˆdCd	¡d  tˆdDd(¡s“J ‚| *tˆdEd	¡d  tˆdFd(¡s¨J ‚| ¡ |v s±J ‚t+| *ttdddƒtdddƒƒ¡ƒdksÈJ ‚| *|¡d  |¡sÕJ ‚| tˆdd	¡du sãJ ‚| |¡sëJ ‚| tˆdGd	¡s÷J ‚| tˆddd6t dƒ fd	¡	s
J ‚| ˆ¡du 	sJ ‚tttdHdIƒtdJdKƒtdLdMƒƒttdHdNƒtdOdPƒtdLdMƒƒƒ}tttdQdMƒtdRdMƒtdSdMƒƒt,dTƒ t,dUƒ t,dVƒfƒ}t-dWdX„ | *|¡D ƒƒdYk	saJ ‚d S )ZNz	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(   úA/usr/lib/python3/dist-packages/sympy/geometry/tests/test_plane.pyÚ<lambda>   ó    ztest_plane.<locals>.<lambda>Fé   é   é   é   é
   ©r   r   r   )r   r   é   é   é   éýÿÿÿé   )é   r8   r8   )r   r   r6   )Zdirection_ratio)r%   r   r   éö   c                   S   s   t  tdddƒ¡S )Nr   )r   Úare_concurrentr   r(   r(   r(   r*   r+   …   s    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   r8   )r   r    r   ièÿÿÿéôÿÿÿiçÿÿÿióÿÿÿ)r   r   r   r#   )Z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   Ú
ValueErrorZis_coplanarr   Zequationr)   r   Ú
projectionr   r
   Zprojection_liner   r   Zrandom_pointZperpendicular_lineZarbitrary_pointr   ZsubsÚp2Zequalsr   r   r   ÚargsZis_parallelZis_perpendicularZdistanceZsimplifyr   r   r	   Zangle_betweenr   r   r   r:   Zparallel_planer=   ÚintersectionÚlenr   Ústr)ÚxÚyÚzÚuÚvrJ   Úp3Zpl3Zpl4Zpl4bZpl5Zpl6Zpl7Zpl8Zpl9Zpl10Zpl11Úl1Úl2Úl3ÚlÚtÚrÚaÚsÚbÚZrD   r(   )r>   r)   r*   Ú
test_plane   sÒ  
 ,$(6<
ÿ<
ÿ  ÿ8ÿ2($
ÿÿ
ÿÿ**
ÿÿ(4(
ÿ
ÿ
ÿ
ÿ ÿ
 
ÿ

ÿ
ÿ
ÿ
ÿÿÿ
ÿ
ÿ*ÿÿ,,,,,0&&&"
ÿ

ÿ

ÿ

ÿ.&þ
þýþÿýÿr_   c                  C   sº   t tdddƒdd} tddƒ}|  |¡ttddƒtddƒtddƒƒks%J ‚tddƒtddƒ}}d}t ||d}| ||¡t tdddƒd	ƒksIJ ‚t d
ddƒ d¡tdddƒgks[J ‚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   rI   r
   r=   rL   )ÚAr]   r[   r^   r>   r(   r(   r*   Útest_dimension_normalizationò   s   
,"
ÿra   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s5J ‚ˆ  d| |¡| d|diksDJ ‚ˆ  |ˆ¡|ksNJ ‚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>   rY   r(   r*   r+     r,   z&test_parameter_value.<locals>.<lambda>c                      s   ˆ   ttddƒtddƒƒˆ¡S )Nr   r   )rd   r   r   r(   re   r(   r*   r+     s    c                      s   ˆ   dˆd¡S )Nrb   r   rc   r(   re   r(   r*   r+     r?   )r   r   r   rd   r   r   r   rH   )rR   rS   r)   rJ   rT   r(   re   r*   Útest_parameter_valueÿ   s   ((rf   N)Zsympyr   r   r   r   r   r   r   r	   r
   Zsympy.geometryr   r   r   r   r   r   r   r   r   r   Zsympy.geometry.utilr   Zsympy.testing.pytestr   r_   ra   rf   r(   r(   r(   r*   Ú<module>   s   , 0 l