![]() |
|
||||||||||
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Второй день не могу понять, как нарисовать безье по EnterFrame.
У меня есть начальная точка и конечная. Третью точку я создаю рандомом, основываясь на заданном допуске по y и расстоянию между точками. Получается, что мне сначала нужно прибавлять координаты, а потом убавлять. Но как это сделать без if я не знаю, а с if я пока не хочу рассматривать, не люблю я их. Если кто то знает, подскажите пожалуйста, как это сделать. Добавлено через 1 час 4 минуты Был бы очень рад, если дали ссылки на примеры с расчетами физики и геометрии. Добавлено через 2 часа 33 минуты Читаю книги) |
|
|||||
|
Кривая Безье вычисляется по специальной формуле, а как вы её вычисляете?
Или вы хотите нарисовать такую кривую в EnterFrame через методы curveTo? Если да, то так не выйдет. Посмотрите здесь - http://help.adobe.com/ru_RU/FlashPla...erSegment.html Создайте кривую, и в EnterFrame с помощью метода getValue(t:Number):Point нарисуйте кривую стандартными методами lineTo() Что-то в этом роде: package { import fl.motion.BezierSegment; import flash.display.Sprite; import flash.events.Event; import flash.geom.Point; /** * ... * @author Samana */ public class Main2 extends Sprite { private var p1:Point = new Point(50, 50); private var p2:Point = new Point(100, 400); private var p3:Point = new Point(200, 0); private var p4:Point = new Point(500, 450); private var curve:BezierSegment = new BezierSegment(p1, p2, p3, p4); private var time:Number = 0; public function Main2() { addEventListener(Event.ENTER_FRAME, enterFrame); } private function enterFrame(e:Event):void { time += 0.01; graphics.clear(); graphics.lineStyle(2, 0xFFFF00); graphics.moveTo(p1.x, p1.y) for (var i:Number = 0; i < time; i += 0.01) // i+=0.01 чем меньше число, тем плавнее кривая { var vPoint:Point = curve.getValue(i) graphics.lineTo(vPoint.x, vPoint.y); } if (time > 1) time = 0; } } } Последний раз редактировалось samana; 25.08.2013 в 20:58. |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
samana Спасибо! я не когда ещё не видел этот раздел!)
На самом деле я вот что делаю ( учусь делать ) - изначально мне доступно долько три параметра (начальнаяТочка ,конечнаяТчка ,диапазонСмешения). И нарисовать мне нужно что то похожее на росток. Вот как в мультиках растения растут. И получается, что я как всегда поспешил. Сейчас читаю книгу и пробую все от туда и оказывается, что там и скорость и направление и ещё несколько значений надо. я как то ушел от этой темы не до конца её постигнув, но вот снова столкнулся и решил уже как можно больше сделать и узнать, что бы в будущем не возникло ступоров. Добавлено через 26 минут Ого! Спасибо! Обещаю, что как прочту и разберу всё, что прочту в книгах, возьмусь за разбор Вами предложенного способа! На словах не совсем понимаю как обьяснить, по этому вот иллюстрация - У меня есть три точки - А,В и С. Чтобы найти угол, я представляю АС как косинус, а СВ синус. Но я не могу немножечко додуматься, как мне этот угол вычислить по отношению к стейджу. Может есть какой то метод готовый? Или хоть что нибудь скажите?) |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Подскажите пожалуйста, что нужно знать, для воплощения ЭТОГО ?
Если не сложно, то хотя бы просто опишите процесс. я сам уже буду искать и учить. |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
okouser Спасибо Вам огромное! я сейчас читаю и смеюсь, а вчера вообще наверное даже покраснел от стыда!) Слов нет! могу сказать, что так со мной не очень часто бывает. И я больше чем уверен, что мой перегруженный мозг так бы и не понял в чем дело! Сегодня целый день читаю и читаю.. И вот у меня ещё один ступор случился, я не знаю как руками высчитать acos. Использовать адобовский мне честно сказать - не хочется. Не хочется - теперь, после того, как я замерил скорость на возведение в степень. Может кто нибудь подсказать, как это сделать? я конечно отдаю себе отчёт, что это не математический форум, но может кто то в погоне за скоростью, нашёл какой нибудь алгоритм... Пусть он бы у меня и оставил в душе чувство "не своего", но я просто в интернете не могу не чего найти, кроме таблицы Брадиса.
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
okouser Спасибо Вам, что помогаете! Сейчас буду читать!
И оно не столько сложно, сколько нудно) Хочется что то в коде делать, а тут чтение...)) Цитата:
Последний раз редактировалось Akopalipsis; 28.08.2013 в 04:17. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вы бы лучше объяснили, какой Вам нужен угол, и почему именно угол.
Например, можно достроить проекции сторон на оси координат и получить прямоугольные треугольники с известными сторонами (раз точки известны, то есть их координаты). Будут катеты, соотв. тангенсы, соотв. углы. Все от задачи зависит. Ну а тригонометрия в ФП написана на С++ и вряд ли возможно найти алгоритм, который будет быстрее на AS3)) Думаю, адоб с радостью бы таким воспользовался. Но не факт)) Блуду вон удавалось обгонять адоб в криптографии. Я бы посоветовал поискать другое решение, другую концепцию решения задачи, а не ее части.
__________________
Reality.getBounds(this); |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Цитата:
я не говорю, что возведение в сотую степень будет быстрее, чем Math.pow, но если не попробовать самому найти угол по косинусу, то ведь не узнаешь, быстрее будет или нет. Цитата:
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
То, что изображено на картинке, даже близко не содержит намека на то, какой Вам нужен угол. Вам нужно взять основу для завитка из, скажем, семи точек, координаты которых либо взять в графическом редакторе, нарисовав "базовый" завиток без "отклонений", либо рассчитать по формуле спирали или другой подходящей функции кривой (для стебля например — синусоиды). Затем надо для каждого завитка пробегаться по этому массиву базовых точек и применять к ним рандомные смещения в небольшом диапазоне. Ну и потом транслировать весь набор точек так, чтобы завиток примкнул к стеблю.
__________________
Reality.getBounds(this); |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Цитата:
Даны две точки А и В и точка С которая ставится рандомом. Она наверное и определяет угол ( который у меня альфа ). минимальная длина узора равняется сумме длины отрезков b и c. К ней рандомно добавляется ещё сколько то лишнего. И вот я начинаю рисовать линию из точки А и основываясь на примере из книги, где говорится о том, что если изменять угол синуса и косинуса, то его результаты в радианах варьируются от -1 до 1. Это получается, как раз завиток. Идеальный круг, но если применить ещё к рисованию скорость, которая замедляется к концу длины узора и как то добавлять угол частями, которые приближают замедление из расчета длины... То вот мне кажется, что получится завиток не правильной формы. как веточка... Но пока это только предположения, точнее сказать, по частям я уже это сделал ( я сделал - замедление скорости, потом прибавил уменьшающуюся толщину, которая уменьшается с замедление, еще сделал завиток и осталось теперь сделать его рандомным и все это соединить. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|