
    h#                     z    d Z dZddlmZmZmZmZ d ZddZddZ	ddZ
d Zd	 Zdd
Zd Zd Zd Zd Zd Zd Zy)z'functions for 2D affine transformations)nullTransform	translatescalerotateskewXskewYmmultinversezTransformPointtransformPointtransformPointszTransformPoints    )cossintanradiansc                       y)N)   r   r   r   r   r    r       L/home/dcms/DCMS/lib/python3.12/site-packages/reportlab/graphics/transform.pyr   r      s    r   c                     dddd| |fS Nr   r   r   )dxdys     r   r   r      s    q!QBr   c                     | dd|ddfS )Nr   r   )sxsys     r   r   r      s    1b!Qr   c                 V    t        |       }t        |      }t        |      }||| |||fS N)r   r   r   )anglecxcyasinacosas         r   r   r      s2    Aq6Dq6D$tR,,r   c                 6    ddt        t        |             dddfS r   r   r   r!   s    r   r   r   "   s    q#gen%q!Q//r   c                 6    dt        t        |             ddddfS r   r(   r)   s    r   r   r   %   s    s75>"Aq!Q//r   c                 X    |rt        t        |       t        |            S t        |       S r    )r   r   r   )axays     r   skewr.   (   s$    	U2YuRy))Ryr   c           	      &   | d   |d   z  | d   |d   z  z   | d   |d   z  | d   |d   z  z   | d   |d   z  | d   |d   z  z   | d   |d   z  | d   |d   z  z   | d   |d   z  | d   |d   z  z   | d   z   | d   |d   z  | d   |d   z  z   | d   z   fS )zA postmultiplied by Br      r            r   )ABs     r   r   r   .   s     aD1I!QqT	!aD1I!QqT	!aD1I!QqT	!aD1I!QqT	!aD1I!QqT	!AaD(aD1I!QqT	!AaD(* *r   c                     t        | d   | d   z  | d   | d   z  z
        }| d   |z  | d    |z  | d    |z  | d   |z  g}t        ||d    | d   z  |d   | d   z  z
  |d    | d   z  |d   | d   z  z
  gz         S )zBFor A affine 2D represented as 6vec return 6vec version of A**(-1)r   r1   r0   r   r2   r3   )floattuple)r4   detRs      r   r	   r	   <   s     !QqT	AaD1I%
&C	
1cAaD59qteCi1c2AQqTE!A$JqtAaDy(!A$qtAaD1I)=>>??r   c                 ^    | d   |d   z  | d   |d   z  z   | d   |d   z  | d   |d   z  z   fS )zBApply the homogenous part of atransformation a to vector v --> A*vr   r0   r   r1   r   r4   vs     r   r
   r
   C   sG    aD1Iad1Q4i!QqT	!A$qt) 344r   c                 v    | d   |d   z  | d   |d   z  z   | d   z   | d   |d   z  | d   |d   z  z   | d   z   fS )z*Apply transformation a to vector v --> A*vr   r0   r   r2   r1   r3   r   r<   s     r   r   r   G   sY    aD1Iad1Q4i!$QqT!A$YqtAaDy%81%=>>r   c                 x    |D cg c]  }t        | |       }}t        |t              rt        |      }|S c c}w r    )r   
isinstancer8   )matrixVr=   rs       r   r   r   K   s8    +,-aq	!-A-!EaAH 	.s   7c                 2    t        t        | fd|            S )Nc                     t        ||       S r    )r
   )xrA   s     r   <lambda>z"zTransformPoints.<locals>.<lambda>Q   s    OF1,E r   )listmap)rA   rB   s     r   r   r   P   s    FEqIJJr   N)r   )r   )r   r   )__doc____all__mathr   r   r   r   r   r   r   r   r   r   r.   r   r	   r
   r   r   r   r   r   r   <module>rM      sZ    - ( '  -00*@5?
Kr   