Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 28.08.2013, 20:54
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 11  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
сдается мне, что Безье не при делах здесь, а нужны только какие-то правила 'кривляния' кривой и модификации их у дочерних элементов
вот поиграйся: фрактал - не фрактал, но что-то вроде
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class Main extends Sprite
	{
 
		public function Main():void
		{
			var swirl:Swirl = new Swirl();
			swirl.x = 100;
			swirl.y = 300;
			addChild(swirl);
 
		}
	}
 
}
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
 
class Swirl extends Sprite
{
	public var step:Number = 5;
	public var dir:Number = 0;
	public var deviation:Number = 0.1;
	public var thickNess:Number = 16;
	public var fidgety:Number = 1;
	public var fertility:Number = 8;
	public var damp:Number = 0.98;
 
	private var tX:Number = 0;
	private var tY:Number = 0;
	private var timer:Timer;
 
	public var length:int = 0;
 
	public function Swirl()
	{
 
		timer = new Timer(100);
		timer.addEventListener(TimerEvent.TIMER, timer_timer);
		timer.start();
	}
 
	private function timer_timer(e:TimerEvent):void
	{
		length++;
		dir += deviation;
		if (Math.random() < fidgety)
		{
			deviation *= -1;
		}
 
		tX += step * Math.cos(dir);
		tY += step * Math.sin(dir);
 
		thickNess *= damp;
 
		graphics.lineStyle(thickNess);
		graphics.lineTo(tX, tY);
 
		// какой-то критерий порождения детей
		var tLen:int = fertility * (1 + Math.random());
		if (length && length % tLen == 0)
		{
			var swirl:Swirl = new Swirl();
			swirl.x = tX;
			swirl.y = tY;
			// какие-то правила наследования свойств
			swirl.thickNess = thickNess;
			swirl.fidgety = 0.65 * fidgety;
			swirl.fertility = 1.25 * fertility;
			swirl.deviation = 1.25 * deviation;
			swirl.dir = dir;
			addChild(swirl);
		}
 
		// какой-то критерий 'умирания'
		if (length > 50 || thickNess < 1)
		{
			timer.stop();
			timer.removeEventListener(TimerEvent.TIMER, timer_timer);
		}
 
	}
 
}

Создать новую тему   Часовой пояс GMT +4, время: 10:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.