
    3jJ
                         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d Zy)z'functions for 2D affine transformations)nullTransform	translatescalerotateskewXskewYmmultcombineTransformsinversezTransformPointtransformPointtransformPointszTransformPoints    )cossintanradiansc                       y)N)   r   r   r   r   r    r       h/var/www/html/eeg-assistent/abrechnung/venv/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k(  rt        | d   | d         S |dkD  r%t        t        | dd  t        | d   | d               S |dk(  r| d   S t               S )a	  
    given transform matrices in the order they should be applied generate
    a combined transform.

    combineTransforms(T0,T1,T2) == mmult(T2,mmult(T1,T0))
                                == T2*T1*T0
    so that T0 is applied first, then T1 and finally T2.
    r1   r   r   N)lenr   r	   r   )TnTs     r   r	   r	   =   sz     
QB "AE!A$qtGI!t(!AB%0%!QqT2BC Q1 	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   r2   r1   r   r3   r4   )floattuple)r5   detRs      r   r
   r
   N   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   r1   r   r2   r   r5   vs     r   r   r   U   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   r1   r   r3   r2   r4   r   rA   s     r   r   r   Y   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   
isinstancer=   )matrixVrB   rs       r   r   r   ]   s8    +,-aq	!-A-!EaAH 	.s   7c                 2    t        t        | fd|            S )Nc                     t        ||       S r!   )r   )xrF   s     r   <lambda>z"zTransformPoints.<locals>.<lambda>c   s    OF1,E r   )listmap)rF   rG   s     r   r   r   b   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   r   <module>rR      s_    - ( '  -00*"@5?
Kr   