IvoSilva

[PROG1] Ficha 7 | Exercício 6

Dec 5th, 2011
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.12 KB | None | 0 0
  1. #include <stdio.h>
  2. float max (float r , float g , float b)
  3. {
  4.     if (r > g && r > b) return r ;
  5.     if (g > r && g > b) return g ;
  6.     if (b > r && b > g) return b ;
  7. }
  8. float min (float r , float g , float b)
  9. {
  10.     if (r < g && r < b) return r ;
  11.     if (g < r && g < b) return g ;
  12.     if (b < r && b < g) return b ;
  13. }
  14. float hue (float r , float g , float b)
  15. {
  16.     r /= 255 ;
  17.     g /= 255 ;
  18.     b /= 255 ;
  19.     float mx = max (r , g , b) , mn = min (r , g , b);
  20.     if (mx == b) return (60 * (r - g) / (mx - mn)) ;
  21.     else if (mx == g) return (60 * (b - r) / (mx - mn) + 120) ;
  22.     else if (mx == r)
  23.     {
  24.         if (g < b) return (60 * (g - b) / (mx - mn) + 360) ;
  25.         else if (g >= b) return (60 * (g - b) / (mx - mn)) ;
  26.     }
  27. }
  28. int main ()
  29. {
  30.     float r , g , b ;
  31.     printf ("Insira as componentes RGB: ") ;
  32.     scanf ("%f %f %f" , &r , &g , &b) ;
  33.     printf ("RGB=(%.f, %.f, %.f) <=> HSV=(%.3f, %.3f, %.3f)" , r , g , b , hue(r , g , b) , (max (r / 255 , g / 255 , b / 255) - min (r / 255 , g / 255 , b / 255)) / max (r / 255 , g / 255 , b / 255) , max (r / 255 , g / 255 , b / 255)) ;
  34.     return 0 ;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment