Electrics-Eagles / PiElectricsEagles-dev

http://www.eeagles.net
MIT License
6 stars 0 forks source link

Gyro /Acc Axis swapping . #30

Closed azaslavskis closed 2 years ago

azaslavskis commented 2 years ago

Idea following , swap axis using string on config

azaslavskis commented 2 years ago

By idea on Russian ;

задачка нарисовалась .. Есть данные три float ..и есть строка.. вида xyz . При этом известно что первый это изначально х ... второй у и третий z И задача менять порядок элементов в случае изменении строки .

Лично я подумав пришел к решению такому : создается массив из трех элементов куда после сравнения буквы закидывается верное значение и возвращается уже результат .. Вопрос может кто то подскажет более элегантное решение?

Входные данные : х это первый = 4 y второй float = 7 z третий float = 8 И дана строка zyx Выход : Третий ,второй ,первый . 8 7 4

azaslavskis commented 2 years ago

But thx to @ed-ilyn for better solution that one is F#

let func x y z = ()
let paramOrder order x y z =
    match order with
    | "xyz" -> func x y z
    | "xzy" -> func x z y
    | "yxz" -> func y x z
    | "yzx" -> func y z x
    | "zxy" -> func z x y
    | "zyx" -> func z y z
azaslavskis commented 2 years ago

Pattern Matching :) awesome thing that i learnt today


fn main() {
    let mut order = String::new();
    order.push_str("xzy");
    let x: u8 = 8;
    let z: u8 = 7;
    let y: u8 = 2;
    let data: (u8, u8, u8) = match order.as_str() {
        "xzy" => (x, z, y),
        "xzy" => (x, z, y),
        "yxz" => (y, x, z),
        "yzx" => (y, z, x),
        "zxy" => (z, x, y),
        "zyx" => (z, y, x),
        _ => (0, 0, 0),
    };

    println!("{:#?}", data);
}
azaslavskis commented 2 years ago

Done