Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > ActionScript 1,2 > Программное рисование |
Автор: Dandik 19.3.2006, 13:35 |
День добрый. Возникла такая задача: Написать функцию (ну или метод класса) принимающую на входе : координаты опорных точек, длину и угол управляющего вектора (ну или координаты управляющее точки, как в curveTo) для каждого сегмента кривой, скорость имитации рисовании (длина шага в сегменте за кадр или кол-во кадров для прохождения сегмента) также для каждого сегмента, возвращающую на выходе плавное, постепенное рисование кривой. Вообщем, проще говоря, мне нужно сымитировать постепенное визуальное рисование линии (не ломаной, а кривой), задав координаты опорных точек (точек перегиба), кривизну и скорость рисования сегмента (части кривой между опорными точками). Подскажите, пожалуйста, как это можно сделать или где можно об этом почитать… |
Автор: AlDev 20.3.2006, 05:32 |
Flash поддерживает программное рисование кривых Безье (см. MovieClip.curveTo метод) |
Автор: Dandik 20.3.2006, 07:24 | ||
Нда, действительно поддерживает нарисование, я бы сказал, то есть рассматривается конечный результат рисования. Мне же важен его процесс тобиш имитация процесса рисования в реальном времени (как карандашиком по бумаге ведут). Впрочем эта задача действительно решается с помощью алгоритма, использующего указанный тобой метода класса. Вопрос только в самом алгоритме, уж слишком сложный и длинный он у меня получается. может есть у кого-нибудь принятый для подобной задачи... Задача сводится к делению кривой Базье на маленькие части и воспроизведение их последовательно по кадрам с помощью curveTo... |
Автор: AlDev 20.3.2006, 13:12 |
Iv сделал нечто подобное, смотри: http://dembicki.org/ |
Автор: Dandik 21.3.2006, 14:11 | ||
Нда, посмотрел, интересно, но только у меня немного другая задача. Как я понимаю, управляющие точки определены ( controlX, controlY ) ну или в некотрых слкучаяях частично определены (по одной из координат). Мне же необходимо сделать универсальную функцию в этом плане (в конечном итоге сымитировать рисованине curveTo) для этого, как я понимаю нужно поделить будующую кривую на число сегментов (в зависимости от скорости) и просто воспроизвести построение этих сегментов по кадрам... Проблема состит в том, как найти координаты этих точек деления кривой (а потом и определить к каждой по управляющему вектору). Вообщем мне нужно хотябы узнать уравнение кривой Базье. Может задача и надумана... тогда вопрос буудет состоять в тм, как мне лучше реализовать обрисовку в онлайне сложной фигуры (как например это сделлано здесь : http://www.acc-design.ru/ (образ девочки)); |
Автор: AzuManga 21.3.2006, 15:34 |
Можно сделать не программно, а по кадрам. Ставишь в последний кадр уже нарисованную линиями фигуру, а потом в предыдущем кадре стираешь кусочек ластиком. В итоге в начальном кадре у тебя должен остаться пустой рисунок. |
Автор: Jlekc 23.3.2006, 12:15 |
хмм, любой справочник поднять формулы кривых не ткии уж и сложные. базис любой кривой это набор прямых, чем больше тем плавнее кривая. расчитать масив прямых, поставить указатель и по интервалу дорисовавать. дык что именно нуна? формулы, как делать интервалы? |
Автор: Dandik 23.3.2006, 22:26 |
Формулы кривых второго порядка (построенные с помощью curveTo) действительно не сложные, если рассматривать их относительно стандартной ориенцации координат. т.е. относительно прямоугольной системы координат... В данном случае нет такой возможности т.к. очень проблематично будет не потерять связь между частями кривой, которая (связь), собственно, и состоит в принадлежности к кривой, построенной с помощью управляющего вектора Базье (тобиш чтобы воспроизвести кривую по частям нельзя отришаться от основного управляющего вектора кривой в каждой части, выражая часть кривой не через управляющий вектор, а через стандартную систему координат). Мне кажется, что это не имеет смысла в рамках flash, т.к. имеет место определение конечной точности - пикселя, которй в составе кривой по методу curveTo и является той прямой. Сдаётся мне, что и окружности вы чертите с помощью отрезков и теоремы Пифагора ![]() ![]() Ну, минимум формулу кривой от угла и длины управляющего вектора Базье. ![]() |
Автор: Jlekc 24.3.2006, 12:17 | ||
лад, не будем вдаваться в демогогию о теории рисования. твой объект(рисунок) мона описать програмно? Наскока знаю Корел или 3ДМакс помогут это зделать. Имея на руках массив всех точек, придеться немного попариться с порядком вывода. Но думаю тож не приблема. Написать метод и дергать его с определенным интервалом, для прорисовки нескольких позиций из твоего масива.
эт стоит поискать на flasher.ru, nuran всегда любил програмное рисование, найди его на форуме и поспрашивай, думаю не обидет |