move the bevel gear to the center

This commit is contained in:
numzero 2026-10-19 02:04:10 +03:00
parent f5d578ccf3
commit bde8936ad0
2 changed files with 13 additions and 12 deletions

View File

@ -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<Vec3> {
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);

View File

@ -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),
)