Forum www.polcz.fora.pl
pcz
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Zadanie

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.polcz.fora.pl Strona Główna -> Grafika komputerowa i wizualizacja
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
gosel




Dołączył: 28 Paź 2008
Posty: 87
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5

PostWysłany: Sob 10:19, 07 Lis 2009    Temat postu: Zadanie

Kod dla console aplication
Kod:

#include <cstdlib>
#include <iostream>

using namespace std;

#define min(x,y) (((x) < (y)) ? (x) : (y))

struct Rgb {double r,g,b;};
struct Cmy {double c,m,y;};
struct Cmyk {double c,m,y,k;};
struct Hsv {double h,s,v;};

void cmyk_cmy (Cmyk &c1, Cmy &c2)
{
     c2.c = min(1,c1.c*(1-c1.k)+c1.k);
     c2.m = min(1,c1.m*(1-c1.k)+c1.k);
     c2.y = min(1,c1.y*(1-c1.k)+c1.k);
}

void cmy_rgb(Rgb &r1, Cmy &c1)
{
 r1.r=1-c1.c;
 r1.g=1-c1.m;
 r1.b=1-c1.y;
}

void hsv_rgb(Hsv &h1, Rgb &r1)
{
 int tmp;
 
 if(h1.h<60) tmp=0;
 else if(h1.h<120) tmp=60;
 else if(h1.h<180) tmp=120;
 else if(h1.h<240) tmp=180;
 else if(h1.h<300) tmp=240;
 else tmp=300;
 
 switch (tmp)
 {
  case 0:
       {
             r1.r=h1.v;
             r1.g=h1.v*(1-h1.s*(1-(h1.h/60.0)));
             r1.b=h1.v*(1-h1.s);
             break;
       }
  case 60:
       {
             r1.r=h1.v*(1-h1.s*((h1.h/60.0)-1));
             r1.g=h1.v;
             r1.b=h1.v*(1-h1.s);
             break;
       }       
  case 120:
       {
             r1.r=h1.v*(1-h1.s);
             r1.g=h1.v;
             r1.b=h1.v*(1-h1.s*(3-(h1.h/60.0)));
             break;
       }   
  case 180:
       {
             r1.r=h1.v*(1-h1.s);
             r1.g=h1.v*(1-h1.s*((h1.h/60.0)-3));
             r1.b=h1.v;
             break;
       }     
  case 240:
       {
             r1.r=h1.v*(1-h1.s*(5-(h1.h/60.0)));
             r1.g=h1.v*(1-h1.s);
             r1.b=h1.v;
             break;
       }   
  case 300:
       {
             r1.r=h1.v;
             r1.g=h1.v*(1-h1.s);
             r1.b=h1.v*(1-h1.s*((h1.h/60.0)-5));
             break;
       }           
 }
}
int main(int argc, char *argv[])

{
 Cmyk c1;
 Cmy c2;
 Rgb r1;
 Hsv h1;
 
 cout<<"Podaj kolor w CMYK: "<<endl>>c1.c>>c1.m>>c1.y;
 
 cmyk_cmy(c1,c2);
 cmy_rgb(r1,c2);
 
 cout<<"Kolor w RGB: "<<endl;
 cout<<r1.r<<" "<<r1.g<<" "<<r1.b<<endl;
 
 cout<<"Podaj kolor HSV: "<<endl>>h1.h>>h1.s>>h1.v;
 
 hsv_rgb(h1,r1);

 cout<<"Kolor w RGB: "<<endl;
 cout<<r1.r<<" "<<r1.g<<" "<<r1.b<<endl;
 

    system("PAUSE");
    return EXIT_SUCCESS;
}


Post został pochwalony 0 razy

Ostatnio zmieniony przez gosel dnia Sob 10:20, 07 Lis 2009, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.polcz.fora.pl Strona Główna -> Grafika komputerowa i wizualizacja Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
Regulamin