Quaternion
Simple Quaternion test.
- Boards:
 - AVR, AVR USB, Nano Every, Nano 33, Due, Teensy 3.x, ESP8266, ESP32
 
Written by PieterP, 2020-03-24 
 https://github.com/tttapa/Arduino-Helpers
 
 
 
bool close(float actual, float expected, float atol) {
    return std::abs(actual - expected) <= atol;
}
 
void setup() {
    Serial.begin(115200);
 
    Vec3f vector = {-0.414578098794425, 0.829156197588850, 0.375000000000000};
    Quaternion result   = Quaternion::fromDirection(vector);
    Quaternion expected = {0.829156197588850, -0.5, -0.25, 0.0};
    float atol = 1e-7;
 
 
    Serial << close(result.w, expected.w, atol) << 
endl;
 
    Serial << close(result.x, expected.x, atol) << 
endl;
 
    Serial << close(result.y, expected.y, atol) << 
endl;
 
    Serial << close(result.z, expected.z, atol) << 
endl;
 
 
    
    Vec3f diff = result.rotate({0, 0, 1}) - vector.normalized();
    Serial << close(diff.norm(), 0, atol) << 
endl;
 
}
 
void loop() {}