Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
14-1123089550
DillerXX
2005-08-03 21:19
2005.08.28
Что вы знаете про...


3-1121700666
ali_tash
2005-07-18 19:31
2005.08.28
Как задекларировать BASED ON переменную


4-1120717532
dmitry501
2005-07-07 10:25
2005.08.28
Использование таймера в сервисе/службе


6-1116066766
DeadEliZe
2005-05-14 14:32
2005.08.28
Indy 10: idIRC - баги, исправления, вопросы


14-1123078775
Константинов
2005-08-03 18:19
2005.08.28
Сбой при дефрагментации HDD.