Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программное рисование, постепенное рисование кривых 
:(
    Опции темы
Dandik
Дата 19.3.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.10.2005
Где: Раменское

Репутация: нет
Всего: нет



День добрый.
Возникла такая задача: Написать функцию (ну или метод класса) принимающую на входе : координаты опорных точек, длину и угол управляющего вектора (ну или координаты управляющее точки, как в curveTo) для каждого сегмента кривой, скорость имитации рисовании (длина шага в сегменте за кадр или кол-во кадров для прохождения сегмента) также для каждого сегмента, возвращающую на выходе плавное, постепенное рисование кривой.
Вообщем, проще говоря, мне нужно сымитировать постепенное визуальное рисование линии (не ломаной, а кривой), задав координаты опорных точек (точек перегиба), кривизну и скорость рисования сегмента (части кривой между опорными точками).
Подскажите, пожалуйста, как это можно сделать или где можно об этом почитать…

PM MAIL WWW ICQ   Вверх
AlDev
Дата 20.3.2006, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 8
Всего: 50



Flash поддерживает программное рисование кривых Безье (см. MovieClip.curveTo метод)
PM MAIL WWW ICQ YIM MSN   Вверх
Dandik
Дата 20.3.2006, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.10.2005
Где: Раменское

Репутация: нет
Всего: нет



Цитата(AlDev @ 20.3.2006, 05:32)
Flash поддерживает программное рисование кривых Безье (см. MovieClip.curveTo метод)

Нда, действительно поддерживает нарисование, я бы сказал, то есть рассматривается конечный результат рисования. Мне же важен его процесс тобиш имитация процесса рисования в реальном времени (как карандашиком по бумаге ведут). Впрочем эта задача действительно решается с помощью алгоритма, использующего указанный тобой метода класса. Вопрос только в самом алгоритме, уж слишком сложный и длинный он у меня получается. может есть у кого-нибудь принятый для подобной задачи...
Задача сводится к делению кривой Базье на маленькие части и воспроизведение их последовательно по кадрам с помощью curveTo...
PM MAIL WWW ICQ   Вверх
AlDev
Дата 20.3.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 8
Всего: 50



Iv сделал нечто подобное, смотри:
http://dembicki.org/
PM MAIL WWW ICQ YIM MSN   Вверх
Dandik
Дата 21.3.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.10.2005
Где: Раменское

Репутация: нет
Всего: нет



Цитата(AlDev @ 20.3.2006, 13:12)
Iv сделал нечто подобное, смотри:
http://dembicki.org/

Нда, посмотрел, интересно, но только у меня немного другая задача. Как я понимаю, управляющие точки определены ( controlX, controlY ) ну или в некотрых слкучаяях частично определены (по одной из координат). Мне же необходимо сделать универсальную функцию в этом плане (в конечном итоге сымитировать рисованине curveTo) для этого, как я понимаю нужно поделить будующую кривую на число сегментов (в зависимости от скорости) и просто воспроизвести построение этих сегментов по кадрам... Проблема состит в том, как найти координаты этих точек деления кривой (а потом и определить к каждой по управляющему вектору). Вообщем мне нужно хотябы узнать уравнение кривой Базье.
Может задача и надумана... тогда вопрос буудет состоять в тм, как мне лучше реализовать обрисовку в онлайне сложной фигуры (как например это сделлано здесь : http://www.acc-design.ru/ (образ девочки));
PM MAIL WWW ICQ   Вверх
AzuManga
Дата 21.3.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 12.5.2005

Репутация: нет
Всего: нет



Можно сделать не программно, а по кадрам.

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

Это сообщение отредактировал(а) AzuManga - 21.3.2006, 15:35
--------------------
 Точка с запятой; 
PM MAIL   Вверх
Dandik
Дата 21.3.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.10.2005
Где: Раменское

Репутация: нет
Всего: нет



Цитата(AzuManga @ 21.3.2006, 15:34 Найти цитируемый пост)
Можно сделать не программно, а по кадрам.

Хм, если бы меня это устраивала я бы не писал в форуме по программированию...

Цитата(AzuManga @ 21.3.2006, 15:34 Найти цитируемый пост)
Ставишь в последний кадр уже нарисованную линиями фигуру, а потом в предыдущем кадре стираешь кусочек ластиком. В итоге в начальном кадре у тебя должен остаться пустой рисунок.

Если фигура сложная, то это примерно клипов около 40 с линейкой в 50-100 кадров каждый, представляешь примерно сколько на это времени уйдёт.... сколько потом слёз по причине удаления всей работы (из-за невыносимо "тяжёлого веса", в данном случае разность в весе программного кода и непрограммного рисования может превышать 1000 раз...) К тому же чтобы исправить кривую придётся всё перечерчивать (а не за несколько секунд поменять координаты опорных точек)... и ещё много всего.... В данном случае об этом и речи быть не может....

PM MAIL WWW ICQ   Вверх
Jlekc
Дата 23.3.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: нет
Всего: 4



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


--------------------
PM MAIL ICQ   Вверх
Dandik
Дата 23.3.2006, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 20.10.2005
Где: Раменское

Репутация: нет
Всего: нет



Цитата(Jlekc @ 23.3.2006, 12:15 Найти цитируемый пост)
хмм, любой справочник поднять формулы кривых не ткии уж и сложные.

Формулы кривых второго порядка (построенные с помощью curveTo) действительно не сложные, если рассматривать их относительно стандартной ориенцации координат. т.е. относительно прямоугольной системы координат... В данном случае нет такой возможности т.к. очень проблематично будет не потерять связь между частями кривой, которая (связь), собственно, и состоит в принадлежности к кривой, построенной с помощью управляющего вектора Базье (тобиш чтобы воспроизвести кривую по частям нельзя отришаться от основного управляющего вектора кривой в каждой части, выражая часть кривой не через управляющий вектор, а через стандартную систему координат).


Цитата(Jlekc @ 23.3.2006, 12:15 Найти цитируемый пост)
базис любой кривой это набор прямых
Мне кажется, что это не имеет смысла в рамках flash, т.к. имеет место определение конечной точности - пикселя, которй в составе кривой по методу curveTo и является той прямой.

Цитата(Jlekc @ 23.3.2006, 12:15 Найти цитируемый пост)
чем больше тем плавнее кривая.
Сдаётся мне, что и окружности вы чертите с помощью отрезков и теоремы Пифагора smile И при обычном рисовании этот метод сгодился бы как-нибудь (100-150 отрезков окружности не давали бы такой гладкости, как 6 сегментов, построенных с помощью curveTо), но в теме. которая обсуждается конечный результат неважен, важен процесс... постройте, например окружность за 2 кадра... (тобишь используя ваши 2 отрезка, можно догадаться, что получится smile )



Цитата(Jlekc @ 23.3.2006, 12:15 Найти цитируемый пост)
дык что именно нуна? формулы, как делать интервалы?
Ну, минимум формулу кривой от угла и длины управляющего вектора Базье. smile Или рассказать мне, глупому, как можно за 200-300 кадров очертить сложный обьект многими кривыми и гладкими линиями с быстрой скоростью, и чтобы публикация весила не больше 7 кб.

PM MAIL WWW ICQ   Вверх
Jlekc
Дата 24.3.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: нет
Всего: 4



лад, не будем вдаваться в демогогию о теории рисования.
твой объект(рисунок) мона описать програмно? Наскока знаю Корел или 3ДМакс помогут это зделать.

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

Цитата(Dandik @ 23.3.2006, 22:26 Найти цитируемый пост)
Ну, минимум формулу кривой от угла и длины управляющего вектора Базье.

эт стоит поискать на flasher.ru,
nuran всегда любил програмное рисование, найди его на форуме и поспрашивай, думаю не обидет


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 1,2 | Следующая тема »


 




[ Время генерации скрипта: 0.1573 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.