void vector3d_normalize(T* v){ T R; R = vector3d_modulus(v); v[0] /= R; v[1] /= R; v[2] /= R; }
//convert vector to a vector with same direction and modulus 1 void vector3d_normalize(float* vector){ float R; R = vector3d_modulus(vector); vector[0] /= R; vector[1] /= R; vector[2] /= R; }
void MMA8451::update_stillness(const float *result){ float cross[3]; float filtered[3]; float modulus_cross; float modulus_delta; uint32_t i = 0; /* update array of filters */ for (i=0; i<3; i++) filtered[i] = abeta[i].update(result[i], *still_flen); /* calculate differences between vectors */ vector3d_cross(result, filtered, cross); modulus_cross = vector3d_modulus(cross); modulus_delta = vector3d_modulus(result) - vector3d_modulus(filtered); if ((fabsf(modulus_delta) > *still_thr) || (fabsf(modulus_cross) > *still_thr)) immobile = false; }