133    if( start_is_inside && end_is_inside )
 
  138    float closerHitT = FLT_MAX;
 
  139    float farHitT = FLT_MAX;
 
  145    const bool leftSegmentHit =
 
  151        closerHitT = leftSegT;
 
  159    const bool rightSegmentHit =
 
  162    if( rightSegmentHit )
 
  164        if( !start_is_inside )
 
  166            if( ( hitted == 
false ) || ( rightSegT < closerHitT ) )
 
  168                closerHitT = rightSegT;
 
  174            if( ( hitted == 
false ) || ( rightSegT > farHitT ) )
 
  184    float   circleStart_T0;
 
  185    float   circleStart_T1;
 
  190                                                         &circleStart_T0, &circleStart_T1,
 
  191                                                         &circleStart_N0, &circleStart_N1 );
 
  195        if( circleStart_T0 > 0.0f )
 
  197            if( !start_is_inside )
 
  199                if( ( hitted == 
false ) || ( circleStart_T0 < closerHitT ) )
 
  201                    closerHitT = circleStart_T0;
 
  202                    closerHitNormal = circleStart_N0;
 
  207                if( ( hitted == 
false ) || ( circleStart_T1 > farHitT ) )
 
  209                    farHitT = circleStart_T1;
 
  210                    farHitNormal = circleStart_N1;
 
  217            if( ( hitted == 
false ) || ( circleStart_T1 > farHitT ) )
 
  219                farHitT = circleStart_T1;
 
  220                farHitNormal = circleStart_N1;
 
  233                                                         &circleEnd_T0, &circleEnd_T1,
 
  234                                                         &circleEnd_N0, &circleEnd_N1 );
 
  237        if( circleEnd_T0 > 0.0f )
 
  239            if( !start_is_inside )
 
  241                if( ( hitted == 
false ) || ( circleEnd_T0 < closerHitT ) )
 
  243                    closerHitT = circleEnd_T0;
 
  244                    closerHitNormal = circleEnd_N0;
 
  249                if( ( hitted == 
false ) || ( circleEnd_T1 > farHitT ) )
 
  251                    farHitT = circleEnd_T1;
 
  252                    farHitNormal = circleEnd_N1;
 
  259            if( ( hitted == 
false ) || ( circleEnd_T1 > farHitT ) )
 
  261                farHitT = circleEnd_T1;
 
  262                farHitNormal = circleEnd_N1;
 
  271        if( !start_is_inside )
 
  278                *aNormalOut = closerHitNormal;
 
  282            wxASSERT( (farHitT >= 0.0f) && (farHitT <= 1.0f) );
 
  288                *aNormalOut = -farHitNormal; 
 
 
bool IntersectCircle(const SFVEC2F &aCenter, float aRadius, float *aOutT0, float *aOutT1, SFVEC2F *aOutNormalT0, SFVEC2F *aOutNormalT1) const