2015-01-22 3 views
0

Я хочу получить самую дальнюю точку пересечения между двумя точками. Но когда я делаю это:получить самую дальнюю точку пересечения луча

RaysCastCallback callBack; 
_world->RayCast(&callBack, in.p1, in.p2); 

то точка пересечения будет ближе от p1 до p2. Есть ли способ получить самую дальнюю точку пересечения, или есть лучший способ достичь моей цели?

ответ

0

Точка пересечения будет самой близкой, если ваш обратный вызов сделает это так - нет встроенного обратного вызова, который дает вам ближайшую точку по умолчанию.

Вот обратный вызов, который будет записывать наиболее удаленную точку пересечения.

class RayCastClosestCallback : public b2RayCastCallback 
{ 
public: 
    bool m_hit; 
    b2Vec2 m_point; 

    RayCastClosestCallback() { 
     m_hit = false; 
    } 

    float32 ReportFixture(b2Fixture* fixture, 
          const b2Vec2& point, 
          const b2Vec2& normal, 
          float32 fraction) { 
     m_point = point; 
     m_hit = true; 
     return 1; // keep going and don't change the ray length 
    } 
}; 
Смежные вопросы