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

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

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
есть такое "шаманское" решение, но где-то и его достаточно
Код AS3:
var test:Shape = new Shape();
addChild(test);
var points:Array=[new Point(20,20),new Point(50,30),new Point(120,10),new Point(50,150)];
test.graphics.lineStyle(1, 0xFF0000);
draw(test.graphics, points);
 
 
function draw(gr:Graphics, points:Array):void {
	var k:Number=0.382;//вовсе не обязательно, подбирается на глаз
	var i:int;
	var p:Point = Point.interpolate(new Point((3 * points[1].x - points[2].x)/2,(3*points[1].y-points[2].y)/2), new Point((points[0].x + points[1].x)/2,(points[0].y+points[1].y)/2), k);
 
	var cntrArr:Array=[p];
 
	for (i = 1; i < points.length - 1; i++) {
		var dist:Number=k*Point.distance(points[i],points[i+1]);
		var dir:Number=Math.atan2(points[i].y-cntrArr[i-1].y,points[i].x-cntrArr[i-1].x);
		cntrArr.push(new Point(points[i].x + dist * Math.cos(dir), points[i].y + dist * Math.sin(dir)));
	}
 
	gr.moveTo(points[0].x,points[0].y);
	for (i = 0; i < cntrArr.length; i++) {
		gr.curveTo(cntrArr[i].x, cntrArr[i].y, points[i + 1].x, points[i + 1].y);
	}
 
}
ps аналогичное решение для кривой 3го порядка здесь есть


Последний раз редактировалось silin; 10.12.2008 в 22:10.
Создать новую тему   Часовой пояс GMT +4, время: 02:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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