2010-10-08 2 views
1

Алгоритм SAT требует, чтобы вы использовали нормали каждого края каждой формы (по существу, вектор, перпендикулярный к краю вектора), который должен использоваться в качестве разделительных осей. Это может быть сделано очень просто ...Определение нормалей краев в теореме о разделительной оси SAT

(х, у) => (у, х)

ИЛИ

(х, у) => (у, х)

Какой должен использоваться алгоритм SAT? Это, по сути, вопрос о том, следует ли использовать нормальную левую руку или правую руку. Будет ли это иметь значение, которое используется? Следует ли использовать только левую или правую руку? Должно ли это измениться в разных ситуациях?

См http://www.codezealot.org/archives/55#sat-axes

ответ

0

Это не имеет значения до тех пор, пока вы используете один и ту же конвенцию для каждого лица, потому что нормали используются для расчета прогнозов, и сравнивая их:

Projection p1 = shape1.project(axis); 
    Projection p2 = shape2.project(axis); 
    // do the projections overlap? 
    if (!p1.overlap(p2)) { 

Результата (!p1.overlap(p2)) будет одинаковым с обеих формул.

HTH

0

Нормальная всегда должна указывать на край. Есть только два возможных решения, которые вы выяснили. Один из них прав, а другой ошибочен.

Какой из них правильный, зависит от двух вещей:

  • ли ваши края по часовой стрелке или против часовой стрелки.
  • Ваша система координации.

 Смежные вопросы

  • Нет связанных вопросов^_^