![]() |
Синусоидальная кривая! Кто смогёт?
Вложений: 2
Как говорится и на старуху бывает проруха. Не варят мои тригонометрические мозги:))
Дано:задаётся программно кривая (синяя), см аттач. необходимо: преобразовать её в синусоидальную кривую, сохраняя направление изгиба (красная). Я конечно подозреваю, что синусоиду можно разбить на более мелкие кривые, но как при этом сохранить функцию изгиба? |
2.jpg - никак не синусойда, а график кривой. Читай математику :D
|
Ну кривую программно можно вобще то по разному задать. Идея проста: система из нескольких уравнений, считается синус, дальше координаты пересчитываются относительно криволинейной системы координат - все.
|
Интересно!
Цитата:
п.с. Сам читай тригонометрию! |
Во втором случае - это что-то вида
y(x) = A*sin(x) + B*sin(k*x); где A много больше B, k значительно больше 1. |
Цитата:
line2_mc.lineTo(x, 23*Math.sin(x*100) + 32*Math.sin(x/4) + 300); x++; не то, что нужно, но красиво... |
граждане!
опять вы упёрлись в синусы-косинусы... не забывайте о специфике материала, с которым работаете. многие беды флэшовых работ происходят от того, что люди делают в них вещи неспецифичными для флэша способами. что я предлагаю: Код:
var radius = 200;если нужна не окружность а какая-то хитрая дуга, то путей несколько: 1. двигать внешний клип программно по параболе/еще какой-то формуле. 2. двигать внешний клип по гайду, нарисованному ручками (сами понимаете, чем это удобно и чем не удобно) 3. взять класс Ивана Дембицкого - Path -- и с помощью него двигать внешний клип программно по любой кривой безье, как угодно. |
Nox Noctis - респектище! красиво выглядит, конечно, но мне не нужна замедленная прорисовка... сейчас попытаюсь разобраться с кодом что тут к чему, а потом спроэцировать на свои рандомные дуги:)....тема ещё не закрыта:)
|
Цитата:
Код:
var center = {x:200, y:200};заметь, по-прежнему всего один синус. а если у тебя такие прям произвольные кривые - бери Path Дембицкого и будет тебе щастье. им очень легко пользоваться. |
а я круче Нокса ^_^
Код:
a = 20 //Apmlitude |
ещё повторяю, открой тригонометрию и посмотри там, что такое график синусойды...он идёт по оси OX изменяя период коллебания и амплитуду, но никак не угол ;)
|
2Usnul
несомненно. :)) главное пол литра не забыть запасти, прежде чем разобраться, что происходит. кстати, просили синусоиду, а у тебя параболки. :)) 2CrazyFlasher зачем придираться к терминам? ведь автор даже показал, что должно получиться :) |
2Nox Noctis
Я ж трезвенник... А про синусойду ты прав - схалявил я, в лом 4 кривых делать =Р и кстати, в случае 90 градусов будет синусойда. кхм... да... тссс... никто ничего не заметил :D |
Цитата:
|
Цитата:
|
Уже не плохо!
Вложений: 1
Тэксь...филателисты - не разбредаемся...
Господа, вы немного упростили задачу! Небходимо, чтоб "синусоида" повторяла кривую безье (а не окружность)... это будет потруднее! Т.е., где бы была задействована анкерная точка, а не центр окружности. См. аттач. |
это было бы серьезно потруднее, если б Ив не сделал свой Path (тебе же Нокс указал..)
Код:
this.createEmptyMovieClip("curve", 0); |
2silin
о, спасибо, а то я уже начала сам писать :) 2veterok4 скачай класс, и добавь в код Силина первой строчкой import org.dembicki.Path; здесь нет смысла самостоятельно всё расчитывать. это сложно. при помощи класса Path ты можешь получить координаты точек на кривой безье на равных расстояниях, что при самостоятельных расчетах является БОЛЬШИМ математическим гемором, ибо имеет место приближенное вычисление интегралов. |
**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 5: The class 'org.dembicki.Path' could not be loaded.
var path = new Path(50, 50, 150, 50, 200, 200);//© Ivan Dembicki, http://www.dembicki.org Чё то ругается отладчик....:) Хотел как есть запустить - глянуть - что за чудо патч? |
Цитата:
|
Вложений: 1
держи, но к Дембицкому все равно сходи..
|
Вложений: 1
ТЕМА не ЗАКРЫТА!
Внедрил патч Дембицкого... до конца правда, ещё не разобрался... однако уже наблюдаю не желательный эффет: к сожалению синусоида идёт по затухающей...см скрин ==> Может какие поправки с приращением внести? |
Ещё поправка!
Вложений: 1
Цитата:
|
дада, ошибка накапливается, но ты не грусти.., поставь туда синус :)
Код:
ampl=10; |
хммм....
Вложений: 1
Цитата:
А теперь новая трабла (сокращённый мой код со встроенным патчем Дембицкого): Код:
with (Math) { |
Цитата:
Цитата:
теоретичски это интерсно, но для практики(флешевой) -null зы: в 9-ом плеере обещают производительность (арифметики по крайней мере) поднять в разы (а то и порядки), может тогда.., поглядим.. |
Ухожу "пробивать лбом стену"...:((
|
можно с диференциалом это все решить достаточно легко... находишь этот... как его по русски то? gradient короче, потом находишь синус, поворачиваешь точку на вычесленный угол и так далее пока не дойдешь до начала. Могу почиркать если кого интересует...
|
ОЙ!
Цитата:
|
Цитата:
очень любопытно, что ты имеешь в виду. зы: если будешь делать, учти, тебе придется объяснить как это работает :) |
Цитата:
Извините за оффтопик:) |
Цитата:
|
и всё же...
Вложений: 1
Цитата:
Всё таки я думаю, нужно подходить к этому "не флешево" а чисто математически? |
Цитата:
тебе нужно во-первых разбить итерации а несколько кадров, во-вторых слепливать нарисованное в единый битмап по мере отрисовки (при помощи BitmapData.draw) |
| Часовой пояс GMT +4, время: 21:55. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.