Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   рисование кривой по расставленным точкам (http://www.flasher.ru/forum/showthread.php?t=83719)

catilina 13.08.2006 19:21

рисование кривой по расставленным точкам
 
народ, помогите с одной интересной проблемой.
для начала нужно расставить точки (вручную) на определенной области.
задача: провести плавную кривую, так, что бы точки стали экстремальными.

получается только вот так:
http://www.mechitov.com/robi/graph.swf

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

вот код, который рисует линию:

this.onEnterFrame = function() {
mc.lineStyle(1, 0x5BA050, 100);
mc.moveTo(this.c0_mc._x, this.c0_mc._y);
var arr = this._parent.path_array=[];
arr.push((this.c0_mc._x+this.c1_mc._x)/2);
arr.push((this.c0_mc._y+this.c1_mc._y)/2);
for (var i = 1; i<(punto-2); i += 1) {
var mc1 = this["c"+i+"_mc"], mc2 = this["c"+(i+1)+"_mc"];
var pt_x = (mc2._x+mc1._x)/2, pt_y = (mc2._y+mc1._y)/2;
mc.curveTo(mc1._x, mc1._y, pt_x, pt_y);
arr.push(mc1._x), arr.push(mc1._y), arr.push(pt_x), arr.push(pt_y);
}
mc.lineTo(mc2._x, mc2._y);
};

где: mc - материнский клип, с_[n]_mc - клипы точек, punto - кол. точек.

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

Sneg 13.08.2006 19:54

Рисовать нужно кубическими или квадратичными кривыми Безье. Классы которые помогут решить данную проблему видел например на сайте Silin'a:
http://www.silin.fatal.ru/AS2/index.html

catilina 13.08.2006 21:09

спасибо снег, на первый взгляд силин то, что нужно.


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

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