Форум 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=78448)

andrey3510 17.04.2006 16:57

Как закрасить сектор круга зная его радиус и угол сектора?
 
вот.:rolleyes:

dedsky 17.04.2006 18:19

рисование прямыми отрезками
Код:

mc.lineStyle();
mc.beginFill();
mc.moveTo(); // тыркаешь в начало дуги
for (ang= "от какого угла", ang="до", ang="прибавляешь шаг") {
xc=R*cos(ang);
yc=R*sin(ang);
mc.lineTo(xc, yc);
}
mc.lineTo(); // конец дуги
mc.lineTo(); // центр дуги
mc.endFill();

ошибки сам исправь :)
еще можно corveTo (сейчас не вспомню)

sergwizard 17.04.2006 18:48

Код:

var x=200, y =100;//координаты сектора
var ugol = 60;//угол
var r = 150;//радиус
_root.createEmptyMovieClip("msec", 1);
        with(_root["msec"+n]){
        lineStyle(0, 0, 0);
        beginFill(0xFF0000, 100);
        moveTo(x, y);
        for (t=0; t<((Math.PI/180)*ugol); t += 0.01) {
                lineTo(x+r*Math.cos(t), y+r*Math.sin(t));
        }
        lineTo(x, y);
        endFill();
}

Вот.

KUZEN 17.04.2006 19:00

Цитата:

Сообщение от sergwizard
Код:

var x=200, y =100;//координаты сектора
var ugol = 60;//угол
var r = 150;//радиус
_root.createEmptyMovieClip("msec", 1);
        with(_root["msec"+n]){
        lineStyle(0, 0, 0);
        beginFill(0xFF0000, 100);
        moveTo(x, y);
        for (t=0; t<((Math.PI/180)*ugol); t += 0.01) {
                lineTo(x+r*Math.cos(t), y+r*Math.sin(t));
        }
        lineTo(x, y);
        endFill();
}

Вот.

только без n with(msec)

andrey3510 17.04.2006 19:23

и наконец подводя итог :quiet:
Код:

function drawSektor(sektor:MovieClip, x0:Number, y0:Number, R:Number, fillColor:Number, angle:Number):Void {
        sektor.clear();
        sektor.lineStyle(1, fillColor);
        sektor.beginFill(fillColor);
        sektor.moveTo(x0, y0);
        sektor.lineTo(x0, y0-R);
        for (var i:Number = 0; i<=angle; i++) {
                xc = x0-R*Math.sin(i*Math.PI/180);
                yc = y0-R*Math.cos(i*Math.PI/180);
                sektor.lineTo(xc, yc);
        }
        sektor.lineTo(x0, y0);
        sektor.endFill();
}

всем спасибо .

KUZEN 17.04.2006 19:57

Можно ещё добавить коэффициент который определял бы по часовой стрелке рисовать или против

Код:

_root.createEmptyMovieClip("msec", 1);
function drawSektor(sektor:MovieClip, x0:Number, y0:Number, R:Number, fillColor:Number, angle:Number,k:Number):Void {
        sektor.clear();
        sektor.lineStyle(1, fillColor);
        sektor.beginFill(fillColor);
        sektor.moveTo(x0, y0);
        sektor.lineTo(x0, y0-R);
        for (var i:Number = 0; i<=angle; i++) {
                xc = x0-R*Math.sin(i*Math.PI/180)*k;
                yc = y0-R*Math.cos(i*Math.PI/180);
                sektor.lineTo(xc, yc);
        }
        sektor.lineTo(x0, y0);
        sektor.endFill();
}
//
drawSektor(msec,100,100,100,0xFF0000,99,-1);



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

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