o
    oÇhí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ž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(   ús/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/geometry/tests/test_plane.pyÚ<lambda>   ó    ztest_plane.<locals>.<lambda>Fé   é   é   é   é
   ©r   r   r   )r   r   é   é   é   éýÿÿÿé   )é   r8   r8   )r   r   r6   )Ú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#   )Úseed)r   r#   r   )gš™™™™™¹?g333333ó?r   )é   r   r   )r   r   ép   rD   )r/   r   r   )r   éõÿÿÿr   )r   r   r/   )r   r/   r   )r%   r%   rE   )r   r%   r   )r   r   rA   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Úis_coplanarr   Úequationr)   r   Ú
projectionr   r   Úprojection_liner   r   Úrandom_pointÚperpendicular_lineÚarbitrary_pointr   ÚsubsÚp2Úequalsr   r   r   ÚargsÚis_parallelÚis_perpendicularÚdistanceÚsimplifyr   r
   r	   Úangle_betweenr   r   r   r;   Úparallel_planer>   ÚintersectionÚlenr   Ústr)ÚxÚyÚzÚuÚvrS   Úp3Úpl3Úpl4Úpl4bÚpl5Úpl6Úpl7Úpl8Úpl9Úpl10Úpl11Úl1Úl2Úl3ÚlÚtÚrÚaÚsÚbÚZrF   r(   )r?   r)   r*   Ú
test_plane   sÒ  
 ,$(6<
ÿ<
ÿ  ÿ8ÿ2($
ÿÿ
ÿÿ**
ÿÿ(4(
ÿ
ÿ
ÿ
ÿ ÿ
 
ÿ

ÿ
ÿ
ÿ
ÿÿÿ
ÿ
ÿ*ÿÿ,,,,,0&&&"
ÿ

ÿ

ÿ

ÿ.&þ
þýþÿýÿry   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   rM   r   r>   r\   )ÚArw   ru   rx   r?   r(   r(   r*   Útest_dimension_normalizationö   s   
,"
ÿr{   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?   rs   r(   r*   r+   
  r,   z&test_parameter_value.<locals>.<lambda>c                      s   ˆ   ttddƒtddƒƒˆ¡S )Nr   r   )r~   r   r   r(   r   r(   r*   r+     s    c                      s   ˆ   dˆd¡S )Nr|   r   r}   r(   r   r(   r*   r+     r@   )r   r   r   r~   r   r   r   rJ   )rb   rc   r)   rS   rd   r(   r   r*   Útest_parameter_value  s   ((r€   N) Úsympy.core.numbersr   r   Úsympy.core.singletonr   Úsympy.core.symbolr   r   Ú(sympy.functions.elementary.miscellaneousr   Ú(sympy.functions.elementary.trigonometricr   r	   r
   Úsympy.geometryr   r   r   r   r   r   r   r   r   r   Úsympy.geometry.utilr   Úsympy.testing.pytestr   ry   r{   r€   r(   r(   r(   r*   Ú<module>   s    0 l