
    ]j<	                     L    d dl Z d dlmZ d dlT dZ G d de j                  ZdS )    N)
itemgetter)*g-C6?c                       e Zd Zd ZdS )TestElementIntersectionsc           	      ,   t          dd          }t          ddd          }t          dddd	          }t          d
ddddd          }||||dfdD             D ]Z\  }}||k    r|         }|         }t	          |                    |                    }t	          |                    |          t          d                    }t          ||          D ]\  }	}
|                     |	d         |
d         t                     |                     |	d         |
d         t                     |                     |
                    |	d                   |
                    |
d                   t                     |                     t          |          t          |          k               \D ]}d}|dk    rd}|         }|
                    d          }|t          d|j         d|j         d          z  }t	          |                    |                    }t	          |                    |          t          d                    }t          ||          D ]\  }	}
|                     |	d         |
d         t                     |                     |	d         |
d         t                     |                     |
                    |	d                   |
                    |
d                   t                     |                     t          |          t          |          k               |                     t          |          |k               |                     t          |          |k               dS )aR  
        test that `some_seg.intersect(another_seg)` will produce properly
        ordered tuples, i.e. the first element in each tuple refers to
        `some_seg` and the second element refers to `another_seg`.
        Also tests that the correct number of intersections is found.

        * This test adapted from svgpathtools
        y              i@y     r@      i@y      D@     b@y     Q@      i@y     @j@     r@y      N@     b@y      D@      i@y      ^@     @o@y      i@      d@y     Q@     b@y      I@      Y@r   y      i@      Y@)line	quadraticcubicarcc                 "    g | ]}D ]}||fS  r   ).0xysegdicts      R/home/agentuser/manim-venv/lib/python3.11/site-packages/test/test_intersections.py
<listcomp>z;TestElementIntersections.test_intersect.<locals>.<listcomp>   s*    >>>g>>aV>>>>       )key)deltar      g      ?ztranslate(5,0) rotate(90, z, )N)LineQuadraticBezierCubicBezierArcsorted	intersectr   zipassertAlmostEqualTOLpoint
assertTruelenMatrixr   r   )selfabcdr   r   xiyyixxyyxcountmidr   s                @r   test_intersectz'TestElementIntersections.test_intersect   sI    :&&Iy*==	9j*EE	9aAz::1qCC ?>>>W>>> 	2 	2DAqAvv
A
AQ((CQZ]];;;Cc3-- R RB&&r!ube3&???&&r!ube3&???&&qwwr!u~~qwwr!u~~S&QQQQOOCHHC01111  	/ 	/AEEzz
A''#,,CFIIIIIIJJJAQ((CQZ]];;;Cc3-- R RB&&r!ube3&???&&r!ube3&???&&qwwr!u~~qwwr!u~~S&QQQQOOCHHC0111OOCHH-...OOCHH-....!	/ 	/r   N)__name__
__module____qualname__r2   r   r   r   r   r   	   s#        ./ ./ ./ ./ ./r   r   )unittestoperatorr   svgelementsr"   TestCaser   r   r   r   <module>r:      sh              
0/ 0/ 0/ 0/ 0/x0 0/ 0/ 0/ 0/ 0/r   