move the bevel gear to the center
This commit is contained in:
parent
f5d578ccf3
commit
bde8936ad0
|
|
@ -67,8 +67,8 @@ pub enum BevelGearCap {
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct BevelGearVisual {
|
pub struct BevelGearVisual {
|
||||||
pub inner_distance: f32,
|
pub pad_in: f32,
|
||||||
pub outer_distance: f32,
|
pub pad_out: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn make_mesh(
|
pub fn make_mesh(
|
||||||
|
|
@ -76,22 +76,23 @@ pub fn make_mesh(
|
||||||
visual: &BevelGearVisual,
|
visual: &BevelGearVisual,
|
||||||
shape: &BevelGearShape,
|
shape: &BevelGearShape,
|
||||||
) -> MeshIndexed<Vec3> {
|
) -> MeshIndexed<Vec3> {
|
||||||
let inner_scale = visual.inner_distance / desc.pitch_distance();
|
let inner_scale = (desc.pitch_distance() - visual.pad_in) / desc.pitch_distance();
|
||||||
let outer_scale = visual.outer_distance / desc.pitch_distance();
|
let outer_scale = (desc.pitch_distance() + visual.pad_out) / desc.pitch_distance();
|
||||||
|
|
||||||
let sides = shape.points.len();
|
let sides = shape.points.len();
|
||||||
let mut mesh = MeshIndexed::new();
|
let mut mesh = MeshIndexed::new();
|
||||||
mesh.vertices.reserve_exact(2 * sides + 2);
|
mesh.vertices.reserve_exact(2 * sides + 2);
|
||||||
mesh.faces.reserve_exact(4 * sides);
|
mesh.faces.reserve_exact(4 * sides);
|
||||||
for pt in shape.to_points() {
|
for pt in shape.to_points() {
|
||||||
let pt = vec3(pt.x, pt.y, desc.pitch_distance());
|
let pt = vec3(pt.x, pt.y, 0.);
|
||||||
mesh.vertices.extend([inner_scale * pt, outer_scale * pt]);
|
mesh.vertices.extend([
|
||||||
|
outer_scale * pt - visual.pad_out * Vec3::Z,
|
||||||
|
inner_scale * pt + visual.pad_in * Vec3::Z,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
let caps = mesh.vertices.len();
|
let caps = mesh.vertices.len();
|
||||||
mesh.vertices.extend([
|
mesh.vertices
|
||||||
vec3(0., 0., visual.inner_distance),
|
.extend([vec3(0., 0., -visual.pad_out), vec3(0., 0., visual.pad_in)]);
|
||||||
vec3(0., 0., visual.outer_distance),
|
|
||||||
]);
|
|
||||||
for k in 0..sides {
|
for k in 0..sides {
|
||||||
let base1 = 2 * k;
|
let base1 = 2 * k;
|
||||||
let base2 = 2 * ((k + 1) % sides);
|
let base2 = 2 * ((k + 1) % sides);
|
||||||
|
|
|
||||||
|
|
@ -122,8 +122,8 @@ impl Core {
|
||||||
let bevel_gear_mesh = bevel_gear::make_mesh(
|
let bevel_gear_mesh = bevel_gear::make_mesh(
|
||||||
&bevel_gear_desc,
|
&bevel_gear_desc,
|
||||||
&bevel_gear::BevelGearVisual {
|
&bevel_gear::BevelGearVisual {
|
||||||
inner_distance: bevel_gear_desc.pitch_distance() - 4.0,
|
pad_in: 4.,
|
||||||
outer_distance: bevel_gear_desc.pitch_distance(),
|
pad_out: 0.,
|
||||||
},
|
},
|
||||||
&bevel_gear::BevelGearShape::new_blank(&bevel_gear_desc, 60),
|
&bevel_gear::BevelGearShape::new_blank(&bevel_gear_desc, 60),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user