Форум: "Потрепаться";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
ВнизПодскажите алгоритм по которому можно отрисовать... Найти похожие ветки
← →
Knight © (2005-08-04 16:02) [0]... перемещение точки, чтоб траектория была более менее похожа на полёт насекомого, но только не комара толкунца, а типа, бабочки, мотылька, светлячка... т.е. хаотичное, гладкое движение без резких углов и чтобы это можно было реализовать на JavaScript без километрового кодинга :)
Сам тут сделал, вроде и ничего, но чё-то их потряхивает, как с перепою... %)
← →
TUser © (2005-08-04 16:09) [1]Первое, что пришло на ум - выбирать точки случайным образом и рисовать через них сплайн или кривую Безье. А чтобы не потряхивало - выбирать точки подальше от текущего положения. Т.е., например, мы сейчас ТУТ, выбираем три точки, строим Безье, летим, когда прилетели в конец - выбираем две дополнительные точки (чтобы гладко было), чтроим, летим и т.д.
← →
Verg © (2005-08-04 17:01) [2]
> Т.е., например, мы сейчас ТУТ, выбираем три точки, строим
> Безье, летим, когда прилетели в конец - выбираем две дополнительные
> точки (чтобы гладко было), чтроим, летим и т.д.
Это ж где так щедро наливают?
← →
TUser © (2005-08-04 17:07) [3]Я сходу предложил. А есть принципиальные возражения по которым такой способ не сработает?
← →
Jeer © (2005-08-04 17:10) [4]Knight © (04.08.05 16:02)
Динамический объект в поле тяготения описывается совсем небольшим числом диф.ур-ов.
Задаешь тягу по продольной оси + случайный процесс и случайное воздействие поперек корпуса.
Вуаля !
← →
Mystic © (2005-08-04 17:22) [5]Ты на картинке нарисуй траекторию и покажи... Потому что бабочки под рукой нету.
← →
Ega23 © (2005-08-04 17:24) [6]Была тут оса, летала по комнате. Задолбала своим хаотичным движением.
Пришлось цЫнично убить...
← →
oldman © (2005-08-04 17:31) [7]
> Ega23 © (04.08.05 17:24) [6]
> Пришлось цЫнично убить...
Какой злой...
Нет бы сначала траекторию срисовать.
← →
inic © (2005-08-04 17:49) [8]Knight © (04.08.05 16:02)
может, например, так:
точка двигается по параболе, дуге круга или окружности,
причем коэфициенты параболы, угла и радиуса дуги, а также и последовательность этих трех типов движения рандомизируется.
Главное строить их так, чтобы их касательные в точке перехода лежали на одной прямой.
походу дела чушь написал, но что-то в этом есть
← →
inic © (2005-08-04 17:50) [9]inic © (04.08.05 17:49) [8]
> точка двигается по параболе, дуге круга или окружности,
Имелось в виду круга или эллипса
← →
MeF Dei Corvi © (2005-08-05 00:02) [10]интересно, траектория пьяного человека в чистом поле похожа на "полёт насекомого"?
← →
DrPass © (2005-08-05 00:30) [11]
> ... перемещение точки, чтоб траектория была более менее
> похожа на полёт насекомого
Лучше всего с помощью Motion Capture. Т.е. ставишь камеры, помечаешь насекомое яркой фосфоренцирующей краской и снимаешь его полет. А потом оцифровываешь
← →
iZEN © (2005-08-05 02:49) [12]Попробовать рандомизировать dx, dy (и, возможно, dz) монотонно на интервале от -max до +max:
for j := 0 to MaxStep do for i := -max to max do begin
X := X + Sign(i) * Random(Abs(i)) * Dx;
Y := Y + Sign(i) * Random(Abs(i)) * Dy;
RenderModel(X, Y);//Отрисовка траектории
end;//i
end;//j
где MaxStep = 100 - "длина" траектории
Dx, Dy = 1...3;
max = 3...5;
Sign(i) - функция "знака числа", возвращает -1, 0 или 1.
Должна получиться плавная кривая. Думаю, подойдёт.
Всё-таки сплайны здесь более уместны.
← →
Knight © (2005-08-05 09:58) [13]В общем пока сделал так. Через рендом генерируются координаты начальной (A) и конечной (B) точек, принадлежащие области полёта. Изображение помещается в А. Для следуюшего шага выбирается случайная точка в секторе, плюс минус 45 градусов от направления от А к В, круга радиусом max_step. И т.д. пока В не попадёт в в этот круг, после чего выбирается новая точка В.
Летят, вроде, довольно сносно...
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c