Несколько новостей сразу:
[update #1] Затем Иван добавил к Уроку технологию создания Модных Волн.
[update #2] 2004-12-13 Еще одно обновление: Класс Path / Движемся по нарисованому пути.
[update #3] 2004-12-16 Обновление: Взаимодействие сети с мышью. (Попробуйте удерживать кнопку мыши нажатой).
Интересно и с юмором :)! Я оценил! Советую и другим.
Ваня, спасибо за подробное разжевывание! Постараюсь подтянуться на прослушивание твоего другана и распитие пива.
Дизайн сайта самое то...
Весьмя прикольно, Вы правы, вид волн не главное, главное математика рулит. Но, к сожалению, реализация такого кораблика на волнах, как пример, проще и без класса Path, а с простой периодической функцией типа cos, а положения корабля задавать как x=f(dx)+x1, dx - приращение перемещения, x1 - текущий х, y = y1+f(cos(dx)), ну я о идее в данный моммент, а не о математике. Я уже не говорю никому, что инерционность и наклончики и того проще. Есть идея задачи движения обьектов параметрическими уравнениями. Таким образом можно задавать более сложые траектории. Причем параметрические уравнения может создавать сам флэш, делать нечто вроде трассировки траектории "нарисованной от руки"(алгоритм правда не простой и медленный (грузный для процессора)), и разбивать ее на совокупность прямых отрезков с параматрами {диаппазон иксов в пределах которых работает функция - (X0-X1); и сама функция y=ax+b}. Получиться ломанная по которой перемещаться не составит труда. Главный прикол, что путь можно будет рисовать во флэше. Если путь анимированный то необходимо будет выполнять просчет траектории пути с определенной дискретностью. Все собираюсь попробовать это сам, но нет ни времени, не охоты когда надо, не что уж там таить - мозгов.
> а с простой периодической функцией типа cos - боюсь, что волны будут очень сухими. хм... каламбур прямо... в моем алгоритме можно добиться даже того, что волны будут с гребнями. придется добавить точек и сделать поведение точек -инициаторов волны посложнее. и опять же: это только пример. решение же довольно универсально. пути могут быть такими, которые замучишься описывать функциями. в то время как с помощью безье можно вытворять чего заблагорассудится.
> Получиться ломанная по которой перемещаться не составит труда. - oбрати внимание, что вычисление точки на кривой с помощью Path занимает менее миллисекунды. При этом довольно сложная волна в моем примере состоит всего из 12 точек. а вот пример: http://dembicki.narod.ru/fla/elastic_line_new6.swf я его делал довольно давно. Как раз это и есть набор ломаных. Такую волну плееру и отрисовать-то тяжко, а если еще навесить какие-либо вычисления, то ноги погнутся и у довольно мощных компов.
далее: Беда с с сегментами ломаной. Их много и они очень маленькие. Вычисление их длины требует Math.sqrt - далеко не самой быстрой математической функции флэша. Плюс накопление погрешности возникает довольно значительное при большом количестве маленьких сегментов. Так что мои эксперименты в этом направлении так ничем и не кончились. Хотя нет, скорее так: мои эксперименты в направлении использования множества отрезков привели в тупик и натолкнули на мысль использования безье. Над чем упорно трудюсь. - Удачи!
Реал респект, Ив. Обязательно поюзаю твой класс!
Спасибо за ответ и предостережение идти по пути "ломанных линий".
добавил еще примерчик
если рисовать восьмёрку - 8, то перестает ездить.
не в 8ке дело. там алгоритм апроксимации не всегда отдает валидный путь. это сильнее заметно на маленьких значениях сглаживания.
добавлено: http://dembicki.org/path/NetAvoidMouse.html
Я обновил новость.
Сеть просто СУПЕР!!!
Иван, вы математик? *уважительно*
где и что можно почитать, о том как делать такие эффекты?
Нет, я не математик. Если речь идет о сетке, то там нет сложной математики. Если речь идет о Path, то когда впервые публиковался класс Path, я писал, что математику расчета длины сегмента кривой мне помогли сделать на форуме algolist.manual.ru. Остальное моё.
Самое главное качество, которое помогает делать подобные эффекты - это чугунная задница. Потому, что при наличии обычной невозможно столько времени усидеть у компа, экспериментируя, исправляя, добиваясь нужного результата.
Где почитать... Если бы было где почитать про то, как сделать это, я бы это не делал. Мне интересно делать то, о чем можно будет написать.
Есть один универсальный алгоритм для того, чтобы создавать что-то новое: - изучаем всё что сделано до этого в некой области - используем, думаем - делаем что-то новое
ok. спасибо.
для начала. я хотел бы разобраться с "фрикциями". т.е. об основных алгоритмах, когда мы что нить тянем или кликаем. а оно дергается с затуханиеми.
если ты не в эхе, то подпишись: http://vmstudio.com/ruflash.php?rules и задай эти вопросы там. гарантирую массу ответов. в том числе и мой. здесь не самое удобное место для этого.
Ваня, ты маньяк! Ну я тебе уже говорил это ;-)
хе... кто бы говорил... сам флэшки уже никак кроме как на байткоде не делает...
Супер! Много же у вас свободного времени Иван =)
Да, много. Но всё без остатка тратится на флэш.
Мы, маньяки, народ работящий :-)
Thank you.
Hi. We would like to talk to Ivan, to ask him permission to publish his "Path" tutorial on our website (http://www.gotoandplay.it), a free community for Flash games developers.
hi i have seen the path examples it very good. i have struck with some problem with my project. i have various point on my movie clip. and i have an object. i have joined the point with line. i need that object to move along the path of one point to other, i have increement bar to control the speed of the object.
its is possible can u give a sample
Thanks Mushtaq
send me private mail iv@design.ru
is a wonderful website! I have found more information on this one site than numerous other sites I have been to. Thank you so much for all your hard work!
thanks
Иван огромное спасибо вам за класс!
и вам спасибо за его использование. новая версия будет вскоре после выхода восьмерки: хочу чтобы сразу и под 8ку была заточена.
Thanks for the Path class - great stuff!
As for the line-smoothing (http://www.dembicki.org/path/smooth-eng.html) you might want to have a look at alternatives:
http://www.motiondraw.com/md/as_samples/t/LineGeneralization/demo.html
This implements Lang Simplification and McMaster's Slide Averaging Algorithm. The resulting knots are connected with a Catmull-Rom spline:
http://www.motiondraw.com/md/as_samples/t/CatmullRomSpline/tween.html
Cheers! Andreas Weber
вижу можно много чего с помощью твоего класса сдеалать, так держать _))
пока только 1 проблемка - уже вышел Флэш 8й, если не трудно сделай версию класса для AS 2
Иван, спасибо огромное за замечательный класс Path и тутор к нему. Хотел только узнать - испытываю странный глюк с этим классом: через некоторое время отрезки волны между контрольными точками начинают изменяться не по положенной синусоиде, а по "наложенной" - часть между отрезками b и c представляет собой не отрицательную "шапку" синусоиды, а так же как на отрезках a-b и c-d - положительную. Скриншот здесь - www.iconed.ru/images/dembicky.jpg. В чем может быть причина? У меня 8 Flash Player (и FIREFOX!), но пробовал и на 7.
Sorry, guys, I don't get updates of this thread on my mail, so it can take a long time for me to notice your comments.
If you have some urgent questions, please reach me by email dembicki at narod.ru or iv at design.ru
The good thing to add: we are preparing the new Path class for release, based on the Newton algorithm (much faster and stable), and what is more, a new package for working with Bezier splines will be released.
Features of the upcoming Bezier package:
— finding point on the curve by its distance from the starting point (already done by Path class)
— finding the point on the curve which is the closest to a given point (mouse pointer position, for example)
— creating an outline for a curve (finding a set of curves that outline a given curve)
— finding intersection of two bezier curves and of a straight line and a curve
— etc.
Big thanx go to Alexander Sergeev, who's math support made all that possible.
Thax iv for sharing these special classes with us. And thanx Andreas Weber,too for http://www.motiondraw.com scripts ;)
http://www.bezier.ru/as/BezierRu.zip