Форум 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)
-   -   HSB>RGB (http://www.flasher.ru/forum/showthread.php?t=122280)

TanaTiX 06.03.2009 15:04

HSB>RGB
 
Встала такая задача: конвертировать во флеше из HSB в RGB.
Вот накидал немного, работает, но не совсем правильно. Вот спрашиваю совета.
Код AS1/AS2:

function hsb(h,s,v){
        s=s/100;
        v=v/100;
 
        k=Math.ceil(h/60)%6;
        f=h/60-Math.ceil(h/60);
 
        p=v*(1-s);
        q=v*(1-f*s);
        t=v*(1-(1-f)*s);
        if(k==0){
                r=v; g=t; b=p;
                }
        if(k==1){
                r=q; g=v; b=p;
                }
        if(k==2){
                r=p; g=v; b=t;
                }
        if(k==3){
                r=p; g=q; b=v;
                }
        if(k==4){
                r=t; g=p; b=v;
                }
        if(k==5){
                r=v; g=p; b=q;
                }
        r=Number(Math.round(r*255)).toString(16);
        g=Number(Math.round(g*255)).toString(16);
        b=Number(Math.round(b*255)).toString(16);
        if(r.length==1){
                r=r+r;
                }
        if(g.length==1){
                g=g+g;
                }
        if(b.length==1){
                b=b+b;
                }
        color="0x"+r+g+b;
        return color;
        }
 
this.createEmptyMovieClip("triangle_mc", 1);
triangle_mc.beginFill(hsb(155,81,84), 100);
triangle_mc.moveTo(200, 200);
triangle_mc.lineTo(300, 300);
triangle_mc.lineTo(100, 300);
triangle_mc.lineTo(200, 200);
triangle_mc.endFill();

PS.
по поводу формулы конвертации можно глянуть тут

iNils 06.03.2009 15:07

Цитата:

Вот накидал немного
Зачем накидывать, когда уже есть готовые решения? Зайдите в поиск.

TanaTiX 06.03.2009 15:18

Ну хотя бы потому что самому разобраться интересно...

2morrowMan 06.03.2009 21:49

Цитата:

Сообщение от TanaTiX (Сообщение 803523)
Ну хотя бы потому что самому разобраться интересно...

Хм... если "самому разобраться", то зачем подсказки спрашивать на форуме ? :)

Котяра 06.03.2009 23:30

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

Добавлено через 1 час 28 минут
Код:

работает, но не совсем правильно. Вот спрашиваю совета.
Что именно не правильно? В чем состоит ваш вопрос?
-правильно ли я портировал алгоритм из википедии на AS2?
-пралиьный ли алгоритм в википедии?
Что именно?


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

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