@@ -1136,8 +1136,8 @@ impl<T: ArrayValue> Array<T> {
11361136 for i in 0 ..chunk_row_count / 2 {
11371137 let left = i * chunk_row_len;
11381138 let right = ( chunk_row_count - i - 1 ) * chunk_row_len;
1139- let left = & mut data[ left] as * mut T ;
1140- let right = & mut data[ right] as * mut T ;
1139+ let left = & raw mut data[ left] ;
1140+ let right = & raw mut data[ right] ;
11411141 unsafe {
11421142 ptr:: swap_nonoverlapping ( left, right, chunk_row_len) ;
11431143 }
@@ -2303,7 +2303,7 @@ impl Array<f64> {
23032303 let max = r. max ( g) . max ( b) ;
23042304 let min = r. min ( g) . min ( b) ;
23052305 let delta = max - min;
2306- let h = if delta == 0.0 {
2306+ let hue = if delta == 0.0 {
23072307 0.0
23082308 } else {
23092309 ( TAU * if max == r {
@@ -2314,11 +2314,11 @@ impl Array<f64> {
23142314 ( r - g) / delta + 4.0
23152315 } ) / 6.0
23162316 } ;
2317- let s = if max == 0.0 { 0.0 } else { 1.0 - min / max } ;
2318- let v = max;
2319- rgb[ 0 ] = h ;
2320- rgb[ 1 ] = s ;
2321- rgb[ 2 ] = v ;
2317+ let sat = if max == 0.0 { 0.0 } else { 1.0 - min / max } ;
2318+ let val = max;
2319+ rgb[ 0 ] = hue ;
2320+ rgb[ 1 ] = sat ;
2321+ rgb[ 2 ] = val ;
23222322 }
23232323 self . meta . take_sorted_flags ( ) ;
23242324 self . validate ( ) ;
@@ -2335,10 +2335,10 @@ impl Array<f64> {
23352335 }
23362336 let channels = * self . shape . last ( ) . unwrap ( ) ;
23372337 for hsv in self . data . as_mut_slice ( ) . chunks_exact_mut ( channels) {
2338- let [ h , s , v , ..] = * hsv else {
2338+ let [ hue , sat , val , ..] = * hsv else {
23392339 unreachable ! ( ) ;
23402340 } ;
2341- let [ r, g, b] = hsv_to_rgb ( h , s , v ) ;
2341+ let [ r, g, b] = hsv_to_rgb ( hue , sat , val ) ;
23422342 hsv[ 0 ] = r;
23432343 hsv[ 1 ] = g;
23442344 hsv[ 2 ] = b;
@@ -2349,20 +2349,22 @@ impl Array<f64> {
23492349 }
23502350}
23512351
2352- pub ( crate ) fn hsv_to_rgb ( h : f64 , s : f64 , v : f64 ) -> [ f64 ; 3 ] {
2353- let h = h / TAU * 6.0 ;
2354- let i = h. floor ( ) as isize ;
2355- let f = h - i as f64 ;
2356- let p = v * ( 1.0 - s) ;
2357- let q = v * ( 1.0 - f * s) ;
2358- let t = v * ( 1.0 - ( 1.0 - f) * s) ;
2359- match i. rem_euclid ( 6 ) {
2360- 0 => [ v, t, p] ,
2361- 1 => [ q, v, p] ,
2362- 2 => [ p, v, t] ,
2363- 3 => [ p, q, v] ,
2364- 4 => [ t, p, v] ,
2365- _ => [ v, p, q] ,
2352+ pub ( crate ) fn hsv_to_rgb ( hue : f64 , sat : f64 , val : f64 ) -> [ f64 ; 3 ] {
2353+ let hue = hue / TAU * 6.0 ;
2354+ let sect = hue. floor ( ) as isize ;
2355+ let f = hue - sect as f64 ;
2356+ let chroma = val * sat;
2357+ let min = val - chroma;
2358+ let mid1 = val - f * chroma;
2359+ let mid0 = val - ( 1.0 - f) * chroma;
2360+ match sect. rem_euclid ( 6 ) {
2361+ 0 => [ val, mid0, min] ,
2362+ 1 => [ mid1, val, min] ,
2363+ 2 => [ min, val, mid0] ,
2364+ 3 => [ min, mid1, val] ,
2365+ 4 => [ mid0, min, val] ,
2366+ 5 => [ val, min, mid1] ,
2367+ _ => unreachable ! ( ) ,
23662368 }
23672369}
23682370
0 commit comments