add a little animation
This commit is contained in:
parent
c600fa082c
commit
82638f7ad3
19
src/lib.rs
19
src/lib.rs
|
|
@ -1,6 +1,9 @@
|
|||
use std::{error::Error, f32::consts::FRAC_PI_2};
|
||||
use std::{
|
||||
error::Error,
|
||||
f32::consts::{FRAC_PI_2, PI},
|
||||
};
|
||||
|
||||
use glam::{Affine3A, Mat4, Quat, UVec2, Vec3, Vec4, vec3, vec4};
|
||||
use glam::{Affine3A, FloatExt, Mat4, Quat, UVec2, Vec3, Vec4, vec3, vec4};
|
||||
|
||||
use crate::render::mesh::GpuParams;
|
||||
|
||||
|
|
@ -71,6 +74,7 @@ pub struct Core {
|
|||
bevel_gear_desc: bevel_gear::BevelGearDesc,
|
||||
bevel_gear_shape: bevel_gear::BevelGearShape,
|
||||
crown_gear_desc: crown_gear::CrownGearDesc,
|
||||
t: f32,
|
||||
}
|
||||
|
||||
fn srgb_to_linear(color: Vec3) -> Vec3 {
|
||||
|
|
@ -162,6 +166,7 @@ impl Core {
|
|||
bevel_gear_desc,
|
||||
bevel_gear_shape,
|
||||
crown_gear_desc,
|
||||
t: 0.,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -195,6 +200,12 @@ impl Core {
|
|||
);
|
||||
};
|
||||
|
||||
let turn_teeth = self.t;
|
||||
let bevel_turns = turn_teeth / self.bevel_gear_desc.teeth as f32;
|
||||
let crown_skip_teeth = self.crown_gear_desc.pitch_radius.floor();
|
||||
let crown_turns =
|
||||
(turn_teeth.fract_gl() + crown_skip_teeth) / (2. * self.crown_gear_desc.pitch_radius);
|
||||
|
||||
set_params(
|
||||
&self.params_gear,
|
||||
vec4(0.2, 0.8, 0.1, 1.0),
|
||||
|
|
@ -204,7 +215,8 @@ impl Core {
|
|||
&self.params_cutter,
|
||||
vec4(0.8, 0.2, 0.1, 1.0),
|
||||
Affine3A::from_rotation_translation(
|
||||
Quat::from_rotation_y(FRAC_PI_2 + self.bevel_gear_desc.cone_halfangle),
|
||||
Quat::from_rotation_y(FRAC_PI_2 + self.bevel_gear_desc.cone_halfangle)
|
||||
* Quat::from_rotation_z(2. * PI * crown_turns),
|
||||
vec3(0., 0., self.bevel_gear_desc.pitch_distance()),
|
||||
),
|
||||
);
|
||||
|
|
@ -290,6 +302,7 @@ impl Core {
|
|||
let output = self.surface.get_current_texture().unwrap();
|
||||
self.render(&output.texture, args);
|
||||
output.present();
|
||||
self.t += 1. / 60.;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ void Viewport::paintEvent(QPaintEvent* event) {
|
|||
if (!core)
|
||||
recreate();
|
||||
core->redraw(args);
|
||||
update();
|
||||
}
|
||||
|
||||
void Viewport::resizeEvent(QResizeEvent* event) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user