replace common index code
This commit is contained in:
parent
d1f515b17d
commit
a8fc644d6c
@ -16,10 +16,7 @@ impl Buf {
|
|||||||
|
|
||||||
// Truncate x and y and return a corresponding index into the data slice.
|
// Truncate x and y and return a corresponding index into the data slice.
|
||||||
const fn index(&self, x: f32, y: f32) -> usize {
|
const fn index(&self, x: f32, y: f32) -> usize {
|
||||||
// x/y can come in negative, hence we shift them by width/height.
|
crate::util::index(self.width, self.height, x, y)
|
||||||
let i = (x + self.width as f32) as usize & (self.width - 1);
|
|
||||||
let j = (y + self.height as f32) as usize & (self.height - 1);
|
|
||||||
j * self.width + i
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the buffer value at a given position. The implementation effectively treats data as periodic, hence any finite position will produce a value.
|
// Get the buffer value at a given position. The implementation effectively treats data as periodic, hence any finite position will produce a value.
|
||||||
|
|||||||
@ -78,11 +78,8 @@ impl Grid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Truncate x and y and return a corresponding index into the data slice.
|
// Truncate x and y and return a corresponding index into the data slice.
|
||||||
fn index(&self, x: f32, y: f32) -> usize {
|
const fn index(&self, x: f32, y: f32) -> usize {
|
||||||
// x/y can come in negative, hence we shift them by width/height.
|
crate::util::index(self.width, self.height, x, y)
|
||||||
let i = (x + self.width as f32) as usize & (self.width - 1);
|
|
||||||
let j = (y + self.height as f32) as usize & (self.height - 1);
|
|
||||||
j * self.width + i
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a value to the grid data at a given position.
|
// Add a value to the grid data at a given position.
|
||||||
|
|||||||
@ -2,3 +2,12 @@
|
|||||||
pub fn wrap(x: f32, max: f32) -> f32 {
|
pub fn wrap(x: f32, max: f32) -> f32 {
|
||||||
x - max * ((x > max) as i32 as f32 - (x < 0.0_f32) as i32 as f32)
|
x - max * ((x > max) as i32 as f32 - (x < 0.0_f32) as i32 as f32)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Truncate x and y and return a corresponding index into the data slice.
|
||||||
|
#[inline]
|
||||||
|
pub const fn index(width: usize, height: usize, x: f32, y: f32) -> usize {
|
||||||
|
// x/y can come in negative, hence we shift them by width/height.
|
||||||
|
let i = (x + width as f32) as usize & (width - 1);
|
||||||
|
let j = (y + height as f32) as usize & (height - 1);
|
||||||
|
j * width + i
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user