Вихревое поле потока в массиве

Я реализовал сетку векторов в 2D (на самом деле в Obj-C, но я полагаю, что это не зависит от языка), который я могу заполнить, например, симплексным шумом, чтобы сгенерировать поле потока за частицы.

Я много искал и гуглил, но так как я не эксперт по математике, я не могу найти способ заполнить свою сетку вихревым (или, по крайней мере, круглым) полем потока.

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

Но для вихря я просто не могу найти никакого решения самостоятельно.

Вихрь должен быть симметричным и центрироваться в моей сетке, но если есть простой способ сделать его асимметричным в той же сетке, хорошо …

1

Решение

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

v_t = (Py-Ry,Rx-Px)

где P это положение вершины и R это центр поля. Суффикс x и y это просто соответствующие координаты.

Чтобы добавить радиальный компонент в поле скоростей, просто добавьте некоторую скорость в радиальном направлении. Я не могу сказать, будет ли это стабильным, когда вы будете имитировать.

Радиальное направление легко описывается как

v_r = (Rx-Px,Ry-Py)

и использование

v = a*v_r+(1-a)*v_t

с хорошим значением для a, вероятно, довольно низкий.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]