Merge pull request #372 from Narcha/master

Removed redundant quaternion multiplication implementation
pull/373/head
sotrh 2 years ago committed by GitHub
commit b6c0b4fd2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -286,34 +286,6 @@ struct State {
instance_buffer: wgpu::Buffer,
}
fn quat_mul(q: cgmath::Quaternion<f32>, r: cgmath::Quaternion<f32>) -> cgmath::Quaternion<f32> {
// 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

Loading…
Cancel
Save