2014-11-02 6 views
1

Я пытаюсь применить трение к 3D-столкновению. Информация у меня есть:Масштабный вектор вдоль плоскости

  • скорость при столкновении
  • нормали к поверхности коллайдера
  • Произвольный коэффициент трения (0 - 1 включительно)

enter image description here

То, что я хотел бы сделать, - это умножить часть скорости, параллельной плоскости, на коэффициент трения, оставляя участок, параллельный нормальному inta кт.

Как я могу выполнить эту операцию?

Я думал, что, возможно, это будет связано с использованием точечного продукта, но затем я начал читать о матрицах, затем векторной проекции, и теперь я довольно потерян.

ответ

0

я был в состоянии решить эту проблему, выполнив следующие действия:

  1. Получить касательный вектор для нормального
  2. Используйте нормального и касательного вектора, чтобы получить матрицу вращения на поверхности
  3. Используйте обратную матрицу вращения для преобразования вектора скорости
  4. Масштабировать составляющие x и z преобразованного вектора коэффициентом трения
  5. Использовать матрицу поворота для трансфо rm скорость назад снова

Я сомневаюсь, что это самый эффективный способ сделать это, но, похоже, он сработал.

+0

Да, вы превратили 3D проблему в 2D выровненной проблемы. Кстати, вы также имеете дело с различными коэффициентами реституции, или ваши столкновения чисто эластичны? – ja72

+0

Я пишу моделирование частиц. Частицы не имеют массы, поэтому столкновения эластичны (я думаю!). – Vesuvian

0

Если вы можете сделать векторное сложение, скалярное умножение (т.умножение вектора на число) и скалярное произведение, то это все, что вам нужно:

V в = (V • V нормальный) V нормальной

в пар = в - V в

В пар = к V пар (где к является коэффициентом, а "=" означает присвоение)

В в = - V в

V = V в + V пар

+0

Спасибо за ваш вклад Бета. Моя математическая нотация не велика, что делает => делать? Также похоже, что Vpar не используется при расчете Vin, или есть два выхода? – Vesuvian

+0

@Vesuvian: Извините, я забыл последний шаг. Я отредактирую. – Beta

+0

Спасибо за обновление @Beta, но я все еще немного смущен. Означает ли первая строка точечный продукт скорости и нормали, умноженный на нормаль? Извинения за ручную. – Vesuvian