diff --git a/code/beginner/tutorial7-instancing/src/challenge.rs b/code/beginner/tutorial7-instancing/src/challenge.rs index 43a4f86c..c31d936b 100644 --- a/code/beginner/tutorial7-instancing/src/challenge.rs +++ b/code/beginner/tutorial7-instancing/src/challenge.rs @@ -286,34 +286,6 @@ struct State { instance_buffer: wgpu::Buffer, } -fn quat_mul(q: cgmath::Quaternion, r: cgmath::Quaternion) -> cgmath::Quaternion { - // This block uses quaternions of the form of - - // q=q0+iq1+jq2+kq3 - - // and - - // r=r0+ir1+jr2+kr3. - - // The quaternion product has the form of - - // t=q×r=t0+it1+jt2+kt3, - - // where - - // t0=(r0 q0 − r1 q1 − r2 q2 − r3 q3) - // t1=(r0 q1 + r1 q0 − r2 q3 + r3 q2) - // t2=(r0 q2 + r1 q3 + r2 q0 − r3 q1) - // t3=(r0 q3 − r1 q2 + r2 q1 + r3 q0 - - let w = r.s * q.s - r.v.x * q.v.x - r.v.y * q.v.y - r.v.z * q.v.z; - let xi = r.s * q.v.x + r.v.x * q.s - r.v.y * q.v.z + r.v.z * q.v.y; - let yj = r.s * q.v.y + r.v.x * q.v.z + r.v.y * q.s - r.v.z * q.v.x; - let zk = r.s * q.v.z - r.v.x * q.v.y + r.v.y * q.v.x + r.v.z * q.s; - - cgmath::Quaternion::new(w, xi, yj, zk) -} - impl State { async fn new(window: &Window) -> Self { let size = window.inner_size(); @@ -592,7 +564,7 @@ impl State { for instance in &mut self.instances { let amount = cgmath::Quaternion::from_angle_y(cgmath::Rad(ROTATION_SPEED)); let current = instance.rotation; - instance.rotation = quat_mul(amount, current); + instance.rotation = amount * current; } let instance_data = self .instances