static HSV toHSV ( double color ) { long argb = Double . doubleToRawLongBits ( color ) ; double a = alpha ( color ) ; double r = clamp ( ( ( argb >> 32 ) & 0xFFFF ) / ( double ) 0xFF00 ) ; double g = clamp ( ( ( argb >> 16 ) & 0xFFFF ) / ( double ) 0xFF00 ) ; double b = clamp ( ( ( argb >> 0 ) & 0xFFFF ) / ( double ) 0xFF00 ) ; double max = Math . max ( Math . max ( r , g ) , b ) ; double min = Math . min ( Math . min ( r , g ) , b ) ; double h , s , v = max ; double d = max - min ; if ( max == 0 ) { s = 0 ; } else { s = d / max ; } if ( max == min ) { h = 0 ; } else if ( max == r ) { h = ( g - b ) / d + ( g < b ? 6 : 0 ) ; } else if ( max == g ) { h = ( b - r ) / d + 2 ; } else { //if( max == b ){ h = ( r - g ) / d + 4 ; } h /= 6 ; return new HSV ( h * 360 , s , v , a ) ; }
Create a HSV color .