Tweak code to be more idiomatic.

This commit is contained in:
dongar committed 2025-08-25 21:30:22 -05:00
1 parent 1c99e4a3a4
commit 8ba6d56512
6 files changed
+48 -44

No files matched your search

+16 -16
View File
@@ -19,7 +19,7 @@ fn new_triangle(p1: &Vertex, p2: &Vertex, p3: &Vertex) -> stl_io::Triangle {
stl_io::Triangle {
normal: Normal::new([n_x, n_y, n_z]),
vertices: [p1.clone(), p2.clone(), p3.clone()],
vertices: [*p1, *p2, *p3],
}
}
@@ -28,7 +28,7 @@ fn radian_steps(steps: u32) -> Vec<f32> {
let counter = 0..steps;
let stepsize = std::f64::consts::TAU / steps as f64;
return counter.map(|i| (i as f64 * stepsize) as f32).collect();
counter.map(|i| (i as f64 * stepsize) as f32).collect()
}
/// Find a point on the cirle at a given angle (in radians).
@@ -37,27 +37,27 @@ fn vertex_on_circle(center: &Vertex, radius: f32, angle: f32) -> Vertex {
let y = center[1] + (radius * angle.sin());
let z = center[2];
return Vertex::new([x, y, z]);
Vertex::new([x, y, z])
}
fn vertexes_on_circle(layer: &Layer, steps: u32) -> Vec<Vertex> {
return radian_steps(steps)
radian_steps(steps)
.iter()
.map(|angle| vertex_on_circle(&layer.center, layer.radius, *angle))
.collect();
.collect()
}
fn tube_base(center: &Vertex, edge: &Vec<Vertex>) -> Vec<Triangle> {
fn tube_base(center: &Vertex, edge: &[Vertex]) -> Vec<Triangle> {
let mut result = Vec::with_capacity(edge.len());
for i in 0..edge.len() {
result.push(new_triangle(&center, &edge[(i + 1) % edge.len()], &edge[i]));
result.push(new_triangle(center, &edge[(i + 1) % edge.len()], &edge[i]));
}
return result;
result
}
fn tube_sides(botoom_edge: &Vec<Vertex>, top_edge: &Vec<Vertex>) -> Vec<Triangle> {
fn tube_sides(botoom_edge: &[Vertex], top_edge: &[Vertex]) -> Vec<Triangle> {
assert_eq!(botoom_edge.len(), top_edge.len());
let mut result = Vec::with_capacity(2 * botoom_edge.len());
@@ -69,15 +69,15 @@ fn tube_sides(botoom_edge: &Vec<Vertex>, top_edge: &Vec<Vertex>) -> Vec<Triangle
result.push(new_triangle(&botoom_edge[i], &botoom_edge[j], &top_edge[j]));
}
return result;
result
}
fn tube_top(center: &Vertex, edge: &Vec<Vertex>) -> Vec<Triangle> {
fn tube_top(center: &Vertex, edge: &[Vertex]) -> Vec<Triangle> {
// The top is the same, except the normals are reversed. We can do that by reversing the order of the vertexes.
let mut edge = edge.clone();
let mut edge = edge.to_owned();
edge.reverse();
return tube_base(&center, &edge);
tube_base(center, &edge)
}
pub fn render(layers: &Layers, resolution: f32) -> Vec<Triangle> {
@@ -91,7 +91,7 @@ pub fn render(layers: &Layers, resolution: f32) -> Vec<Triangle> {
let mut layer_vertexes: Vec<Vec<Vertex>> = Vec::new();
for layer in &layers.layers {
layer_vertexes.push(vertexes_on_circle(&layer, circle_steps));
layer_vertexes.push(vertexes_on_circle(layer, circle_steps));
}
let mut result: Vec<Triangle> = Vec::new();
@@ -100,9 +100,9 @@ pub fn render(layers: &Layers, resolution: f32) -> Vec<Triangle> {
for i in 0..layer_vertexes.len() - 1 {
result.append(&mut tube_sides(&layer_vertexes[i], &layer_vertexes[i + 1]));
}
result.append(&mut tube_top(&layers.top, &layer_vertexes.last().unwrap()));
result.append(&mut tube_top(&layers.top, layer_vertexes.last().unwrap()));
return result;
result
}
#[cfg(test)]