
    ]j5                     x    d dl Z d dlZd dl T d dlT d Z G d dej                  Z G d dej                  ZdS )    N)*c                  &   t          t                      dz  t                      dz  ft                      dz  t                      dz  ft                      dz  t                      dz  ft                      dz  t                      dz  f          S )N2   )CubicBezierrandom     Q/home/agentuser/manim-venv/lib/python3.11/site-packages/test/test_cubic_bezier.pyget_random_cubic_bezierr      st    	B2&	B2&	B2&	B2&	  r	   c                       e Zd Zd ZdS )TestElementCubicBezierLengthc                 *   d}d}t          |          D ]i}t                      }|                                }|                    d          }t	          ||z
            }||z  }|                     ||d           jt          d||z  z             d S )Nd   r   gư>)error   )placeszAverage cubic-line error: %g)ranger   _length_scipy_length_defaultabsassertAlmostEqualprint)selfnr   _bl1l2cs           r
   test_cubic_bezier_lengthz5TestElementCubicBezierLength.test_cubic_bezier_length   s    q 	5 	5A'))A""B"""..BBGAQJE""2r!"4444,	:;;;;;r	   N)__name__
__module____qualname__r    r   r	   r
   r   r      s#        
< 
< 
< 
< 
<r	   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestElementCubicBezierPointc                    dd l }t          d          D ]}t                      }|                     |j        |                    d                     |                     |j        |                    d                     |                     |                    |	                    t          |j                  t          |j                  g          |                    ddg          k                         d S )Nr     r   )numpyr   r   assertEqualstartpointend
assertTrueallarraylistnpoint)r   npr   r   s       r
   "test_cubic_bezier_point_start_stopz>TestElementCubicBezierPoint.test_cubic_bezier_point_start_stop    s    t 	 	A'))AQWaggajj111QUAGGAJJ///OOrxxagQU <==1a&AQAQQRR   		 	r	   c                 D   dd l }t          d          D ]
}t                      }|                    ddd          }|                    |          }g }t          t          |                    D ]0}|                    |                    ||                              1t          |||          D ]l\  }}	}
| 	                    |                    |          t          |	                     | 	                    t          |	          t          |
                     md S )Nr   r'   r   r   )r(   r   r   linspacer1   lenappendr+   zipr)   Point)r   r2   r   r   posv1v2ipp1p2s              r
   -test_cubic_bezier_point_implementations_matchzITestElementCubicBezierPoint.test_cubic_bezier_point_implementations_match+   s   t 	7 	7A'))A++aC((C#BB3s88__ + +		!''#a&//**** b"-- 7 7	2r  U2YY777  rE"II66667	7 	7r	   c                     t          dddd          }|                                }|                     |d         d           d S )Nr   y             y            y             r   )r   bbox
assertLess)r   cubicrD   s      r
   test_cubic_bounds_issue_214z7TestElementCubicBezierPoint.test_cubic_bounds_issue_214<   s@    Aw55zz||Q$$$$$r	   c                    t          d          D ]}t                      dz  }t                      dz  }t                      dz  }|d|z  z
  d|z  z   }t          ||||          }|                                }t          ||||dz             }|                                }	t	          ||	          D ]\  }}|                     ||d           d S )Nr         gdy=gh㈵>delta)r   r   r   rD   r8   r   )
r   r=   ar   r   dcubic1bbox1cubic2bbox2s
             r
   "test_cubic_bounds_issue_214_randomz>TestElementCubicBezierPoint.test_cubic_bounds_issue_214_randomA   s    s 
	9 
	9A1A1A1AAE	AE!A Aq!,,FKKMME Aq!e)44FKKMMEE5)) 9 91&&q!4&88889
	9 
	9r	   c           
      V   t          t          dddddd                    }|t          t          dd          t          d	d
          t          dd
          t          dd                    z  }|                                }|                     |d         |d         d           d S )Ng}AU@gAfc=gAfcgY{AgZ	k )	transformg+H]gQ`7#@g`şdϫDgsOO@gT3d+D@g+]@)r*   control1control2r,   r   rJ   r   rK   )PathMatrixr   r9   rD   assertNotAlmostEquals)r   r>   boundss      r
   test_cubic_bounds_issue_220z7TestElementCubicBezierPoint.test_cubic_bounds_issue_220N   s    6"2NOUegz  }Q  R  R  S  S  S	[u^MBBUS`anMoMoz  AN  O\  {]  {]  ch  iv  wD  cE  cE  F  F  F  	F""6!9fQis"CCCCCr	   N)r!   r"   r#   r3   rA   rG   rS   r\   r   r	   r
   r%   r%      sd        	 	 	7 7 7"% % %
9 9 9D D D D Dr	   r%   )r   unittestsvgelementsr   TestCaser   r%   r   r	   r
   <module>r`      s               < < < < <8#4 < < <3D 3D 3D 3D 3D("3 3D 3D 3D 3D 3Dr	   