Мне нужно вычислить тангенс, указывающий на то же (x, y) направление, что и 2D-вектор из заданной нормы. Вот визуализация:Расчет касательной направленности в определенном 2D направлении
Directed Tangent From Normal Viz
Красный самолет с голубого луча на поверхности, и это нормально, зеленый «Стрелка» представляет направление 2D и синей касательной нормали с (x, y) - направление зеленой стрелки. Таким образом, при просмотре сверху (в пространстве объектов, а не в поверхностном пространстве), чтобы проектировать на 2D, зеленый и синий - это одно и то же направление.
Так что, если это было слишком абстрактно, вот контекст: Я делаю симуляцию эрозии графического процессора и для вычисления растворения, мне нужен вектор скорости воды 3D, чтобы проверить на столкновение с нормальным ландшафтом. Но симуляция в 2D, поэтому у меня есть только двумерный вектор скорости. Документ, на который я ссылаюсь, отмечает только то, что программа должна рассчитать этот трехмерный вектор от касательной поверхности поверхности и вектора 2D-скорости.
Учитывая эту информацию, нормальный и 2D-вектор, что такое математика для вычисления упомянутого соответствия касательной?
Хорошо, похоже, теперь это изображение. Итак, первый шаг в других словах: d = -dot (v, n), правильно? После этого я не мог полностью следовать ... но у, похоже, моя желаемая выровненная касательная. Последний бит не применяется для моего случая, поскольку я не использую моделирование на основе частиц, а использую модель мелкой воды. Чтобы получить «твердость» столкновения, используется упрощенная формула, которая выглядит следующим образом: length (-n * u); Я все равно ценю :) – Seneral
Ой, подождите, получилось;) Не нужно успеть получить все-таки :) Большое спасибо, с нетерпением жду, если он работает! – Seneral
будьте осторожны, чтобы нормализовать 'n', в противном случае ваши расстояния будут неправильными; предположите, что вы предварительно вычислили эти первые, чтобы не делать invsqrt все время –