генерировать случайный путь в 3-х измерениях - PullRequest
2 голосов
/ 11 октября 2010

, пока я работаю над проектом, который требует симуляции движения рыбы, я помещаю рыбу в трехмерную среду и хочу, чтобы она могла плавать на пути, похожем на настоящую рыбу.Мне интересно, есть ли какой-нибудь алгоритм, который может генерировать квазислучайный, рыбоподобный путь?

С наилучшими пожеланиями, всем.

Ответы [ 3 ]

2 голосов
/ 11 октября 2010

Это имитация рыбы в Javascript (доступен исходный код) имитирует движение рыбы в двух измерениях; однако, это было бы легко изменено на три измерения. Вы должны позволить системе развивать мозги нейронной сети рыб, чтобы увидеть полный эффект или посмотреть видео, размещенное на странице.

Рыба движется аналогично аквариуму с двумя ступенями, где приведены две переменные скорости, позволяющие рыбе вращаться или двигаться вперед в зависимости от разницы между переменными скорости. Некоторые параметры приведены, чтобы рыба не могла резко повернуться. Для каждого временного шага значения ускорения рыбы задаются нейронной сетью (обучаемой эволюцией) для каждого из «протекторов», которые, используя законы Ньютона, влияют на скорость протектора рыбы. Вместо использования нейронной сети вы можете сделать что-то более случайное; однако вам нужно уменьшить количество, на которое рыба может превратиться в очень маленький диапазон.

2 голосов
/ 11 октября 2010

Однажды я написал программу для развлечения, в которой я генерировал червей, которые перемещались случайным образом. Уверен, что вы можете использовать тот же подход в вашем случае, если вы не ищете что-то слишком сложное. Моя попытка была довольно простой эвристикой. Решение было для 2D, но вы можете легко расширить его до 3D.

Я бы создал матрицу вероятности, показывающую вероятность того, что рыба [n] будет двигаться в каждом направлении на итерации i + 1, например: 90% для продолжения движения в одном направлении, 2% для поворота на 45 градусов к влево, 2% для поворота на 45 градусов вправо, 1% для поворота на 90 градусов влево или вправо и т. д. Кроме того, вам придется хранить указание того, в каком направлении движется ваша рыба в данный момент. Проценты были в основном решены методом проб и ошибок, но это тривиально.

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

0 голосов
/ 11 октября 2010

Попробуйте Googling "алгоритм стека".Биороиды тоже есть на что посмотреть.

...