Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
10-1080215297
Max_Fin
2004-03-25 14:48
2005.08.28
DCOM и LPSTR


4-1120629000
just
2005-07-06 09:50
2005.08.28
как отменить общий доступ к дискам (программно)


1-1123578798
Hereticsoul
2005-08-09 13:13
2005.08.28
Развернуть окно borderstyle:=bsnone


1-1123669045
BFG9k
2005-08-10 14:17
2005.08.28
RichEdit с картинками


1-1123612655
Aleksandrrr
2005-08-09 22:37
2005.08.28
Блокировка выделенных клавиш !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский