From bde8936ad0bbd26570080be10ccde0a16ad29d29 Mon Sep 17 00:00:00 2001 From: numzero Date: Mon, 19 Oct 2026 02:04:10 +0300 Subject: [PATCH] move the bevel gear to the center --- src/bevel_gear.rs | 21 +++++++++++---------- src/lib.rs | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/bevel_gear.rs b/src/bevel_gear.rs index e203372..f3a8d53 100644 --- a/src/bevel_gear.rs +++ b/src/bevel_gear.rs @@ -67,8 +67,8 @@ pub enum BevelGearCap { #[derive(Debug, Clone, Copy)] pub struct BevelGearVisual { - pub inner_distance: f32, - pub outer_distance: f32, + pub pad_in: f32, + pub pad_out: f32, } pub fn make_mesh( @@ -76,22 +76,23 @@ pub fn make_mesh( visual: &BevelGearVisual, shape: &BevelGearShape, ) -> MeshIndexed { - let inner_scale = visual.inner_distance / desc.pitch_distance(); - let outer_scale = visual.outer_distance / desc.pitch_distance(); + let inner_scale = (desc.pitch_distance() - visual.pad_in) / desc.pitch_distance(); + let outer_scale = (desc.pitch_distance() + visual.pad_out) / desc.pitch_distance(); let sides = shape.points.len(); let mut mesh = MeshIndexed::new(); mesh.vertices.reserve_exact(2 * sides + 2); mesh.faces.reserve_exact(4 * sides); for pt in shape.to_points() { - let pt = vec3(pt.x, pt.y, desc.pitch_distance()); - mesh.vertices.extend([inner_scale * pt, outer_scale * pt]); + let pt = vec3(pt.x, pt.y, 0.); + mesh.vertices.extend([ + outer_scale * pt - visual.pad_out * Vec3::Z, + inner_scale * pt + visual.pad_in * Vec3::Z, + ]); } let caps = mesh.vertices.len(); - mesh.vertices.extend([ - vec3(0., 0., visual.inner_distance), - vec3(0., 0., visual.outer_distance), - ]); + mesh.vertices + .extend([vec3(0., 0., -visual.pad_out), vec3(0., 0., visual.pad_in)]); for k in 0..sides { let base1 = 2 * k; let base2 = 2 * ((k + 1) % sides); diff --git a/src/lib.rs b/src/lib.rs index db011d3..9a92840 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -122,8 +122,8 @@ impl Core { let bevel_gear_mesh = bevel_gear::make_mesh( &bevel_gear_desc, &bevel_gear::BevelGearVisual { - inner_distance: bevel_gear_desc.pitch_distance() - 4.0, - outer_distance: bevel_gear_desc.pitch_distance(), + pad_in: 4., + pad_out: 0., }, &bevel_gear::BevelGearShape::new_blank(&bevel_gear_desc, 60), )