@@ -893,8 +893,8 @@ impl<T: ArrayValue> Array<T> {
893
893
for i in 0 ..chunk_row_count / 2 {
894
894
let left = i * chunk_row_len;
895
895
let right = ( chunk_row_count - i - 1 ) * chunk_row_len;
896
- let left = & mut data[ left] as * mut T ;
897
- let right = & mut data[ right] as * mut T ;
896
+ let left = & raw mut data[ left] ;
897
+ let right = & raw mut data[ right] ;
898
898
unsafe {
899
899
ptr:: swap_nonoverlapping ( left, right, chunk_row_len) ;
900
900
}
@@ -2060,7 +2060,7 @@ impl Array<f64> {
2060
2060
let max = r. max ( g) . max ( b) ;
2061
2061
let min = r. min ( g) . min ( b) ;
2062
2062
let delta = max - min;
2063
- let h = if delta == 0.0 {
2063
+ let hue = if delta == 0.0 {
2064
2064
0.0
2065
2065
} else {
2066
2066
( TAU * if max == r {
@@ -2071,11 +2071,11 @@ impl Array<f64> {
2071
2071
( r - g) / delta + 4.0
2072
2072
} ) / 6.0
2073
2073
} ;
2074
- let s = if max == 0.0 { 0.0 } else { 1.0 - min / max } ;
2075
- let v = max;
2076
- rgb[ 0 ] = h ;
2077
- rgb[ 1 ] = s ;
2078
- rgb[ 2 ] = v ;
2074
+ let sat = if max == 0.0 { 0.0 } else { 1.0 - min / max } ;
2075
+ let val = max;
2076
+ rgb[ 0 ] = hue ;
2077
+ rgb[ 1 ] = sat ;
2078
+ rgb[ 2 ] = val ;
2079
2079
}
2080
2080
self . meta . take_sorted_flags ( ) ;
2081
2081
self . validate ( ) ;
@@ -2092,10 +2092,10 @@ impl Array<f64> {
2092
2092
}
2093
2093
let channels = * self . shape . last ( ) . unwrap ( ) ;
2094
2094
for hsv in self . data . as_mut_slice ( ) . chunks_exact_mut ( channels) {
2095
- let [ h , s , v , ..] = * hsv else {
2095
+ let [ hue , sat , val , ..] = * hsv else {
2096
2096
unreachable ! ( ) ;
2097
2097
} ;
2098
- let [ r, g, b] = hsv_to_rgb ( h , s , v ) ;
2098
+ let [ r, g, b] = hsv_to_rgb ( hue , sat , val ) ;
2099
2099
hsv[ 0 ] = r;
2100
2100
hsv[ 1 ] = g;
2101
2101
hsv[ 2 ] = b;
@@ -2106,20 +2106,22 @@ impl Array<f64> {
2106
2106
}
2107
2107
}
2108
2108
2109
- pub ( crate ) fn hsv_to_rgb ( h : f64 , s : f64 , v : f64 ) -> [ f64 ; 3 ] {
2110
- let h = h / TAU * 6.0 ;
2111
- let i = h. floor ( ) as isize ;
2112
- let f = h - i as f64 ;
2113
- let p = v * ( 1.0 - s) ;
2114
- let q = v * ( 1.0 - f * s) ;
2115
- let t = v * ( 1.0 - ( 1.0 - f) * s) ;
2116
- match i. rem_euclid ( 6 ) {
2117
- 0 => [ v, t, p] ,
2118
- 1 => [ q, v, p] ,
2119
- 2 => [ p, v, t] ,
2120
- 3 => [ p, q, v] ,
2121
- 4 => [ t, p, v] ,
2122
- _ => [ v, p, q] ,
2109
+ pub ( crate ) fn hsv_to_rgb ( hue : f64 , sat : f64 , val : f64 ) -> [ f64 ; 3 ] {
2110
+ let hue = hue / TAU * 6.0 ;
2111
+ let sect = hue. floor ( ) as isize ;
2112
+ let f = hue - sect as f64 ;
2113
+ let chroma = val * sat;
2114
+ let min = val - chroma;
2115
+ let mid1 = val - f * chroma;
2116
+ let mid0 = val - ( 1.0 - f) * chroma;
2117
+ match sect. rem_euclid ( 6 ) {
2118
+ 0 => [ val, mid0, min] ,
2119
+ 1 => [ mid1, val, min] ,
2120
+ 2 => [ min, val, mid0] ,
2121
+ 3 => [ min, mid1, val] ,
2122
+ 4 => [ mid0, min, val] ,
2123
+ 5 => [ val, min, mid1] ,
2124
+ _ => unreachable ! ( ) ,
2123
2125
}
2124
2126
}
2125
2127
0 commit comments