Я хотел бы узнать больше об очень определенном способе получения расстояния от точки до линии в 2D. Вот как это делается:Тест HalfSpace to Point
// Given an arbitrary point, and a normal vector
// to a line along with a scalar offset
distance = DotProduct(normal, point) - offset
Я знаю, что это правда, потому что Эрин Катто использует этот метод в его исходном коде Box2D Lite. На this page программист упоминает уравнение:
distance = (V dot normal) - offset
Этот единственный ресурс, я могу найти для такого расчета. обычный способ проверки пересечения полупространства с точкой состоит в том, чтобы выровнять вектор от рассматриваемой плоскости к вашей точке, а затем посмотреть, обращена ли она в сторону от или к нормали к этой плоскости, проверив знак (+ или -) полученного скаляра.
Это может быть нежелательным в приложениях реального времени, где поиск точки на плоскости (или 2D-линия в этом случае) может быть дорогостоящим, и у вас есть только нормальная эта линия вместе со смещением.
Итак, что это за «смещение» и как вы можете его вычислить? Что представляет собой это смещение? Из того, что я в настоящее время известно о моих собственных исследований моя догадка, что это с переменной из общего уравнения линии в 2D:
ax + by + c = 0
Дополнительная информация: Erin Катто это вычислительное его смещение, как это в несколько мест (в контексте Oriented обнаружения столкновений Ограничительная Box), но я не понимаю математику здесь или что происходит:
offsetScalar = Dot(BoxPositionVector, normalVector) + BoxYHalfWidthScalar;
Удивительный ответ, спасибо большое! – RandyGaul