Алгоритм "вываливания"

Здесь Вы можете найти или обсудить множество различных алгоритмов, их описаний, реализаций на VB и других языках.
BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Алгоритм "вываливания"

Сообщение BION » 27.12.2007 (Чт) 11:09

Всем здрасть.
В общем хочу реализовать эффект замедления и... как бы это лучше сказать - затухающего колебания графического элемента или контрола.
Вот есть ссылка http://www.virgin.com/home.aspx. Там на хомпаге большая флэша, на ней много линков, и вот при наведении мыши они так вот както выдвигаются, калеблются. Короче говоря посмотрите сами. Вообще сайт классно сделан.
В этой связи вопрос, с какого бока вообще подступить к этому, какой алгоритм?
Спасибо.
Последний раз редактировалось BION 27.12.2007 (Чт) 11:18, всего редактировалось 2 раз(а).

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 27.12.2007 (Чт) 11:15

BION
начни с формулы затухающих колебаний

x = A * cos (wt+ф)


где ф - это греч. фи, начальная фаза колебаний.

формула гармонических колебаний. если уменьшать значение А (амплитуду) колебания будут затухать

з.ы. фишка в том, что формула применяется почти ко всем циклическим процессам. если например с ее помощью расчитывать координату Х, а заменив синус на косинус, координату Y, то получим циклическое движение по кругу с указанием конкретной угловой координаты (градуса, если проще). я таким образом стрелки часов делаю (ну величина А само собой, в случае со стрелками - постоянна)
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 27.12.2007 (Чт) 12:46

Только, Денис, то, что на сайте - не гармонические колебания.

И фишка это не формулы гармонических колебаний, а фишка, вытекающая из определения синуса и косинуса на единичной окружности.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Сообщение BION » 27.12.2007 (Чт) 13:31

Хакер писал(а):Только, Денис, то, что на сайте - не гармонические колебания.

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


Пожалст по подробнее...
Можт примерчики какиньть есть?
Последний раз редактировалось BION 27.12.2007 (Чт) 13:34, всего редактировалось 1 раз.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 27.12.2007 (Чт) 13:33

Хакер
гармонические, если A=const, если А - переменная, то колебания негармонические. Если А уменьшается - затухающие, если А увеличивается - "нарастающие".

на сайте - затухающие

Вроде с первого раза ясно выразился:
формула гармонических колебаний. если уменьшать значение А (амплитуду) колебания будут затухать


BION

Нужен пример?
вот мой пост в топике про симпатичные часики в "Наших проектах"
Последний раз редактировалось Денис 27.12.2007 (Чт) 13:51, всего редактировалось 1 раз.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Сообщение BION » 27.12.2007 (Чт) 13:48

Денис
Да, прикольно спасибо, буду смотреть. Вот ток чет не врублюсь в циферблат, это што у моряков такие часы или у кого?

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 27.12.2007 (Чт) 13:55

я хз... в википедии (английской) написано, что они вообще с древнеебипетских времен существуют.
тут главное не часы, а принцип позиционирования стрелки на окружности - замени одну из координат на for - next и получишь синусоиду, умножь вторую координату на произвольную амплитуду (затухающую в том же for - next'e) и получишь свои затухающие колебания. тока рассчитывать таким образом надо не точку на графике, а масштаб твоего контрола
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 27.12.2007 (Чт) 16:00

Чёрт возьми, Денис, там колебания НЕ СИНУСОИДАЛЬНЫЕ. Какого чёрта ты рассказываешь мне, что такое гармонические (хотя я и без тебя знаю, но это даже ладно), не поинтересовавшись, что я вообще имею ввиду, а?

Надписи на сайте ведут себя так, как ведут себя падающие в высоты на некоторую упругую поверхность тела с учётом действия сопротивления воздуха. Можешь посмотреть вот здеськак это выглядит.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 27.12.2007 (Чт) 20:18

Хакер
С учетом не абсолютно упругого удара. Сопротивление воздуха там увидеть нереально ИМХО. Больно уж простенький пример.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 27.12.2007 (Чт) 20:20

Да, ты больше прав. Главное, что потеря энергии.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 27.12.2007 (Чт) 21:38

Хакер писал(а):Чёрт возьми, Денис, там колебания НЕ СИНУСОИДАЛЬНЫЕ. Какого чёрта ты рассказываешь мне, что такое гармонические (хотя я и без тебя знаю, но это даже ладно), не поинтересовавшись, что я вообще имею ввиду, а?

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


Вот как это выглядит:
StimorolD3DX писал(а):
Код: Выделить всё
Function GotoW(pos As D3DVECTOR, Angle As Single, Speed As Single) As D3DVECTOR
    GotoW.z = pos.z + Cos(Angle) * Speed
    GotoW.x = pos.x + Sin(Angle) * Speed
    GotoW.y = pos.y
End Function
Function GotoS(pos As D3DVECTOR, Angle As Single, Speed As Single) As D3DVECTOR
    GotoS.z = pos.z - Cos(Angle) * Speed
    GotoS.x = pos.x - Sin(Angle) * Speed
    GotoS.y = pos.y
End Function
Function GotoA(pos As D3DVECTOR, Angle As Single, Speed As Single) As D3DVECTOR
    GotoA.z = pos.z + Sin(Angle) * Speed
    GotoA.x = pos.x - Cos(Angle) * Speed
    GotoA.y = pos.y
End Function
Function GotoD(pos As D3DVECTOR, Angle As Single, Speed As Single) As D3DVECTOR
    GotoD.z = pos.z - Sin(Angle) * Speed
    GotoD.x = pos.x + Cos(Angle) * Speed
    GotoD.y = pos.y
End Function


здесь переменная Speed как я понимаю и есть наша амплитуда.

Я еще раз повторяю, любой циклический процесс описывается тригонометрически. В том числе гармонические колебания, к которым ты так неравнодушен, хотя я автору этого топика объяснял, как сделать затухающие.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 27.12.2007 (Чт) 21:56

Денис
Извини - это бред. Колебания тут негармонические и тригонометрией ты их опишешь только разложив в ряд Фурье. Вопрос только зачем? Зачем страдать то фигней. Когда вываливающаяся кнопка достигает края она сразу меняет знак на противоположный, а не затухает и снова разгоняется как это было бы с синусом.

Она просто движется с ускорением до правого края. Потом теряет сколько-то скорости. Если скорость выше пороговой, то меняет знак скорости на противоположный и с замедлением переходящим в обртное ускорение движется обратно. Вопрос только в том сколько скорости ей терять при ударе. ИМХО для подобных целей проще взять сначала половину (или другой процент), потом посмотреть и только если будет выглядеть некрасиво думать о нелинейных функциях.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 27.12.2007 (Чт) 22:08

Чтобы не продолжать бесполезный спор, давайте вытянем исходник флэшки, которая рисует кнопки и их поведение на сайте http://www.virgin.com а то наш спор будет долгим и беспредметным.

Кста, фрагмент из кода стиморола походу отвечает за вращение вокруг сцены, тут я наверное дал маху... :roll:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 27.12.2007 (Чт) 22:26

В лучшем случае, ты там увидешь свой любимый синус, стоящий внутри модуля.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Сообщение BION » 28.12.2007 (Пт) 0:44

Денис писал(а):Чтобы не продолжать бесполезный спор, давайте вытянем исходник флэшки, которая рисует кнопки и их поведение на сайте http://www.virgin.com а то наш спор будет долгим и беспредметным.


Как?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.12.2007 (Пт) 8:43

Денис, уравнение должно базироваться не на тригонометрических функциях, а на параболе. Уравнение точки, движущейся с ускорением, помнишь? GAGArin все правильно написал.
Lasciate ogni speranza, voi ch'entrate.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 28.12.2007 (Пт) 8:47

BION
Можно например воспользоваться программой Sothink SWF Decompiler

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 28.12.2007 (Пт) 10:28

alibek писал(а):уравнение должно базироваться не на тригонометрических функциях, а на параболе

Вот это аргумент, убедил. А что если мне примерчик написать?
секундочку...
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.12.2007 (Пт) 10:38

Фу.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 28.12.2007 (Пт) 10:53

Хакер
Ха ха!!! Никак хакер посты накручиваешь??? :lol:

все
прикладываю мой пример. может я что не так сделал... но ... я прав!
Вложения
Вываливание.rar
алгоритм вываливания: парабола и тригонометрия
(1.41 Кб) Скачиваний: 371
Последний раз редактировалось Денис 28.12.2007 (Пт) 11:43, всего редактировалось 1 раз.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.12.2007 (Пт) 10:53

Именно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Алгоритмы

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 7

    TopList