o
    A+ i0                     @   sp   d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mZ G dd de jZG dd	 d	e jZdS )
    N)pi)affinity)Point)loadsc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
AffineTestCasec                 C   s   t d}tt t|d  W d    n1 sw   Y  tt t|g d W d    n1 s7w   Y  tt td g d W d    d S 1 sUw   Y  d S )NLINESTRING(2.4 4.1, 2.4 3, 3 3))	                        	   )r   r	   r
   r   r   r   )load_wktpytestZraises	TypeErrorr   affine_transform
ValueErrorAttributeError)selfg r   n/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/shapely/tests/legacy/test_affinity.pytest_affine_params   s   "z!AffineTestCase.test_affine_paramsc           	         s   d dt d}t| jsJ d fdd	}t d}t d}||| t d}t d	}||| t d
}t d}||| |t d |t d |t d |t d |t d d S )N)r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   zMULTIPOLYGON EMPTYc                    sl   | j rJ t|  }|j rJ | |sJ |d ur2|j s J t|}|j s+J ||s4J d S d S N)has_zr   r   equals)g2g3a2a3matrix2dmatrix3dr   r   	test_geom"   s   



z8AffineTestCase.test_affine_geom_types.<locals>.test_geomzPOINT(12.3 45.6)zPOINT(12.3 45.6 7.89)z#LINESTRING(0.9 3.4, 0.7 2, 2.5 2.7)z/LINESTRING(0.9 3.4 3.3, 0.7 2 2.3, 2.5 2.7 5.5)z,LINEARRING(0.9 3.4, 0.7 2, 2.5 2.7, 0.9 3.4)z<LINEARRING(0.9 3.4 3.3, 0.7 2 2.3, 2.5 2.7 5.5, 0.9 3.4 3.3)zwPOLYGON((0.9 2.3, 0.5 1.1, 2.4 0.8, 0.9 2.3), (1.1 1.7, 0.9 1.3, 1.4 1.2, 1.1 1.7), (1.6 1.3, 1.7 1, 1.9 1.1, 1.6 1.3))z<MULTIPOINT ((-300 300), (700 300), (-800 -1100), (200 -300))zFMULTILINESTRING((0 0, -0.7 -0.7, 0.6 -1), (-0.5 0.5, 0.7 0.6, 0 -0.6))zjMULTIPOLYGON(((900 4300, -1100 -400, 900 -800, 900 4300)), ((1200 4300, 2300 4400, 1900 1000, 1200 4300)))zkGEOMETRYCOLLECTION(POINT(20 70), POLYGON((60 70, 13 35, 60 -30, 60 70)), LINESTRING(60 70, 50 100, 80 100))r   )r   r   r   Zis_empty)	r   Zempty2dr&   Zpt2dZpt3dZls2dZls3dZlr2dZlr3dr   r#   r   test_affine_geom_types   sJ   


z%AffineTestCase.test_affine_geom_typesc                 C   sh   t d}t d}d}t||}||dsJ |jrJ d}t||}||ds-J |jr2J d S )Nr   )LINESTRING(-0.2 14.35, -0.2 11.6, 1 11.6)r	   r   r         @ffffff@ư>)r	   r   r   r   r*   r   r   r   
   r+   r,   d   )r   r   r   equals_exactr   )r   r   
expected2dr$   r!   r%   r"   r   r   r   test_affine_2dS   s   
zAffineTestCase.test_affine_2dc                 C   s  t d}t d}d}d}t||}t||}t||}t||}|jr)J |jr.J |js3J |js8J t d}	t d}
t d}||	dsLJ ||	dsTJ t|j|jD ]\}}t||D ]
\}}| || qdq[t|j|
jD ]\}}t||D ]
\}}| || qqwd S )	Nr   z1LINESTRING(2.4 4.1 100.2, 2.4 3 132.8, 3 3 128.6)r)   )r	   r   r   r   r*   r   r   r   gׁ?r+   r,   r/   r(   zGLINESTRING(-0.2 14.35 130.54096, -0.2 11.6 140.47744, 1 11.6 139.19728)z;LINESTRING(-0.2 14.35 100.2, -0.2 11.6 132.8, 1 11.6 128.6)r-   )r   r   r   r   r0   zipcoordsZassertAlmostEqual)r   r   r    r$   r%   Za22Za23Za32Za33r1   Z
expected3dZ
expected32aeapepr   r   r   test_affine_3da   s<   



zAffineTestCase.test_affine_3dN)__name__
__module____qualname__r   r'   r2   r9   r   r   r   r   r      s
    :r   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TransformOpsTestCasec                 C   s   t d}t|d}t d}||sJ tj|ddd}||s$J tj|t d dd}t d	}||s:J tj|dd
d}t d}||sMJ tj|d|jd d}t d}||scJ tj|dtddd}t d}||syJ d S )N%LINESTRING(240 400, 240 300, 300 300)Z   %LINESTRING(220 320, 320 320, 320 380)center)geomZangleoriginr	   Tuse_radiansz%LINESTRING(320 380, 220 380, 220 320)centroidrC   z+LINESTRING(182.5 320, 282.5 320, 282.5 380)r   z%LINESTRING(140 300, 240 300, 240 360)r   z(LINESTRING(-400 240, -300 240, -300 300))r   r   rotater   r   r4   r   )r   lsrlselsr   r   r   test_rotate   s$   z TransformOpsTestCase.test_rotatec                 C   s*   t tdd}td}||sJ d S )NLINESTRING EMPTYr?   )r   rH   r   r   )r   rJ   rK   r   r   r   test_rotate_empty   s   z&TransformOpsTestCase.test_rotate_emptyc                 C   s   t d}t d}td}t||}| dksJ ||s"J ttd }tj||dd}| td ks;J ||sBJ d S )Nr>   r@   g     V@r	   TrD   )r   nparrayr   rH   itemr   r   )r   rI   rK   thetarJ   r   r   r   test_rotate_angle_array   s   
z,TransformOpsTestCase.test_rotate_angle_arrayc              	   C   sh  t d}t|}||sJ t|ddd}t d}||s#J t|j|jD ]\}}t||D ]
\}}| || q3q*tj|ddddd}||sPJ tj|ddddd	}t d
}||seJ tj|ddd|jd d	}t d}||s}J tj|dddtdddd	}t d}||sJ t|j|jD ]\}}t||D ]
\}}||ksJ qqd S )N.LINESTRING(240 400 10, 240 300 30, 300 300 20)r	   r
   g      ?z-LINESTRING(210 500 5, 210 200 15, 330 200 10)rA   )rB   ZxfactZyfactZzfactrC   rF   rG   z4LINESTRING(228.75 537.5, 228.75 237.5, 348.75 237.5)r   z%LINESTRING(240 600, 240 300, 360 300)r/      i  z1LINESTRING(380 800 505, 380 500 515, 500 500 510))r   r   scaler   r3   r4   assertEqualr   )r   rI   slsrK   r5   br7   bpr   r   r   
test_scale   s4   
zTransformOpsTestCase.test_scalec                 C   (   t td}td}||sJ d S NrM   )r   rV   r   r   r   rX   rK   r   r   r   test_scale_empty      z%TransformOpsTestCase.test_scale_emptyc                 C   s$  t d}t|}||sJ t|dd}t d}||ds#J tj|td t d dd	}||ds9J tj|ddd
dd}||dsKJ tj|dddd}t d}||ds`J tj|dd|jd d}t d}||dsxJ tj|ddtddd}t d}||dsJ d S )NrT      i~LINESTRING (253.39745962155615 417.3205080756888, 226.60254037844385 317.3205080756888, 286.60254037844385 282.67949192431126)r-      r   TrD   rA   F)rB   xsZysrC   rE   rF   rG   zLINESTRING(258.42150697963973 406.49519052838332, 231.6265877365273980 306.4951905283833185, 291.6265877365274264 271.8541743770057337)r   zGLINESTRING(266.7949192431123038 400, 240 300, 300 265.3589838486224153)r   zLINESTRING(347.179676972449101 261.435935394489832, 320.3847577293367976 161.4359353944898317, 380.3847577293367976 126.7949192431122754))r   r   skewr   r0   r   r4   r   )r   rI   rX   rK   r   r   r   	test_skew   s6   
zTransformOpsTestCase.test_skewc                 C   r\   r]   )r   re   r   r   r^   r   r   r   test_skew_empty  r`   z$TransformOpsTestCase.test_skew_emptyc                 C   s   t d}t d}tddg}t||d |d }|d dks"J |d dks*J ||d	s2J ttd
 t d g}tj||d |d dd}|d td
 ksUJ |d t d ks`J ||d	shJ d S )NrT   rb   g      .@g      >)r   .)r   .r   r   r-   rc   r   TrD   )r   rO   rP   r   re   r0   r   )r   rI   rK   Zxs_ysrX   r   r   r   test_skew_xs_ys_array  s   z*TransformOpsTestCase.test_skew_xs_ys_arrayc                 C   s   t d}t|}||sJ t|ddd}t d}||s#J t|j|jD ]\}}t||D ]
\}}||ks=J q3q*tj|dddd}||sOJ d S )NrT   r/   i  iz-LINESTRING(340 800 0, 340 700 20, 400 700 10))rB   ZxoffZyoffZzoff)r   r   	translater   r3   r4   )r   rI   tlsrK   r5   rY   r7   rZ   r   r   r   test_translate  s   
z#TransformOpsTestCase.test_translatec                 C   s8   t td}td}| || ||sJ d S r]   )r   ri   r   
assertTruer   )r   rj   rK   r   r   r   test_translate_empty0  s   z)TransformOpsTestCase.test_translate_emptyN)r:   r;   r<   rL   rN   rS   r[   r_   rf   rg   rh   rk   rm   r   r   r   r   r=      s    "+r=   )Zunittestmathr   numpyrO   r   Zshapelyr   Zshapely.geometryr   Zshapely.wktr   r   ZTestCaser   r=   r   r   r   r   <module>   s    y