рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдХрдореНрдкрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдИрдПрд╕рдПрд╕ рдХреЛ рдбреЙрдХрд┐рдВрдЧ рдХрд░рдирд╛

рд╕реНрдкреЗрд╕рдПрдХреНрд╕ рдХрдВрдкрдиреА, рдХреБрдЦреНрдпрд╛рдд рдЗрд▓реЙрди рдорд╛рд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рдд, рдЖрдИрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рдХреНрд░реВ рдбреНрд░реИрдЧрди рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рди рдХреЗ рдореИрдиреБрдЕрд▓ рдбреЙрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реБрдЖ, рддреЛ рдбреЙрдХрд┐рдВрдЧ 27 рдордИ, 2020 рдХреЛ рд╣реЛрдЧреАред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЪрд╛рд▓рдХ рджрд▓ рдореИрдиреНрдпреБрдЕрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рджрд░рдЕрд╕рд▓, рдпрд╣ рдореИрдиреБрдЕрд▓ рдореЛрдб рд╣реИ рдЬрд┐рд╕реЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╕реНрд╡рдпрдВ рд╕рд╛рдЗрдЯ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд░рд┐рдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдЦрд┐рд▓реМрдирд╛ рд╣реИ ...

рдЕрдВрддрд░рд┐рдХреНрд╖ рд╢рдЯрд▓ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЙрдбрд╝рд╛рди рднрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ ... рдФрд░ рдЧреЗрдЯрд╡реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬрд┐рд╕ рд╕рдЯреАрдХрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рд╡рд╣ 20 рд╕реЗрдореА рд╣реИ ... рддреАрди рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХреЛрдгреАрдп рд╡реЗрдЧ, рд╡рд┐рд╕реНрдерд╛рдкрди рдХреА рдЧрддрд┐ред рдЖрджрд┐ред

рдореЗрд░реЗ рдЕрдВрджрд░ рджреЗрд╢рднрдХреНрддрд┐ рдХреА рднрд╛рд╡рдирд╛рдПрдБ рдмрдЬрдиреЗ рд▓рдЧреАрдВ рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдкреВрд░реНрд╡ рдЕрдВрддрд░рд┐рдХреНрд╖ рд╢рдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реЛ рдЧрдИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЛ рдПрдХ рдЪреБрдиреМрддреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рдорд╕реНрдХ рдиреЗ рдбреЙрдХрд┐рдВрдЧ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдЙрдирдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдбреЙрдХрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдбреНрд░реИрдЧрди рдФрд░ рдЖрдИрдПрд╕рдПрд╕ рдХреЛ рдЗрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдЖрдк рдХреИрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдПрд▓реЛрди рдорд╕реНрдХ?

рдЫрд╡рд┐
рдзреВрдореНрд░рдкрд╛рди рдЖрдкрдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЗ рд▓рд┐рдП рдмреБрд░рд╛ рд╣реИ

рдзреНрдпрд╛рди! рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо "рднреЛрдЬ" рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рдерд╛ред рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рди рдпрд╛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдкреНрд░рддреНрдпрдХреНрд╖ рдпрд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдиреБрдХрд╕рд╛рди рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИред




рдкрд╣рд▓рд╛, рдереЛрдбрд╝рд╛ рдЗрддрд┐рд╣рд╛рд╕ред

рдпрд╣ рдПрдХ рд╕рд░реНрд╡рд╡рд┐рджрд┐рдд рддрдереНрдп рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рди рдмреБрд░рд╛рди рдПрдХ рдЕрдореЗрд░рд┐рдХреА рд╢рдЯрд▓ рдХреЗ рд╕рдорд╛рди рдерд╛ред рдФрд░ рдпрд╣ рднреА рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдореЗрд░рд┐рдХреА "рд╕рдордХрдХреНрд╖реЛрдВ" рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЙрдбрд╝рд╛рди рднрд░реАред рд▓реЗрдХрд┐рди рдХрдо рд╣реА рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреА рдПрдХрдорд╛рддреНрд░ рдЙрдбрд╝рд╛рди рдорд╛рдирд╡ рд░рд╣рд┐рдд рдереАред рдЙрд╕рдиреЗ рдЦреБрдж рдХреЛ рдЙрддрд╛рд░ рджрд┐рдпрд╛, рд╡рд╣ рдЙрддрд░рд╛ рдФрд░ рдЙрд╕рдиреЗ рдмрд╣реБрдд рдЦрд░рд╛рдм рдореМрд╕рдо рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рд╕рдм рдХрд┐рдпрд╛ред

рдЕрдореЗрд░рд┐рдХрди рд╢реБрдЯрд▓ рд╣рдореЗрд╢рд╛ рдореИрдиреБрдЕрд▓ рдореЛрдб рдореЗрдВ рд╣реА рдЙрддрд░рддреЗ рдереЗред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдПрдХ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд╕реЗ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реБрдЖ рдХрд░рддреЗ рдереЗред рдпрд╣, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрд▓ рд░рд╛рдд рд╕реЛрдЪрд╛ рдерд╛ред



рд▓реЗрдХрд┐рди рдЪрд▓рд┐рдП рдореБрджреНрджреЗ рдкрд░ рдЖрддреЗ рд╣реИрдВред рд╕реНрдкреЗрд╕рдПрдХреНрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ ред

рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рдЪрд▓рди 0.2 рдореАрдЯрд░ (20 рд╕реЗрдореА) рдХреЗ рднреАрддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдЯреЗрд╢рди рдФрд░ рдЬрд╣рд╛рдЬ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЧрдВрднреАрд░ рд╕реАрдорд╛ рд╣реИред

рд╣рдо рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВред



рдКрдкрд░, рдХреЗрдВрджреНрд░реАрдп рд╕рд░реНрдХрд▓ рдХреЗ рдиреАрдЪреЗ рдФрд░ рдиреАрдЪреЗ рддреАрди рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдХрд╛ рдХреЛрдгреАрдп рд╡рд┐рдЪрд▓рди рд╣реИред
рд╣рд░рд╛ - рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпред

рдиреАрд▓рд╛ - рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреА рдЧрддрд┐ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдпрд╣ рдмрджрд▓рддрд╛ рд╣реИред

рдЧреЗрдЯ рдореЗрдВ рдореАрдЯрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд▓реЗрдлреНрдЯ рдСрдлрд╕реЗрдЯред рдХреЛрдИ рд╡рд┐рд╕реНрдерд╛рдкрди рдЧрддрд┐ рдирд╣реАрдВ рд╣реИ ...

рд╕реНрдХреНрд░реАрди рдХреЗ рдиреАрдЪреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреАрдмреЛрд░реНрдб рдкрд░ рдЙрдирдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХреЗ рд╕рд╛рде рдмрдЯрди рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╕рдмрд╕реЗ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдирддреЗ рд╣реИрдВред

рдХреАрдмреЛрд░реНрдб рдмрдЯрди рдХрд╛ рд▓реЗрдЖрдЙрдЯред



рдмрд╛рдПрдВ рдмреНрд▓реЙрдХ рдЧреЗрдЯрд╡реЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдСрдлрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдСрдлрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИред

рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдпрд╛ рдкрд╛рддреЗ рд╣реИрдВ, рдПрдХ рдХреЛрдб рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдХреАрдмреЛрд░реНрдб рдХреНрд▓рд┐рдХ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛ред

function simulateKey(keyCode, type, modifiers) {
    var evtName = (typeof (type) === "string") ? "key" + type : "keydown";
    var modifier = (typeof (modifiers) === "object") ? modifier : {};

    var event = document.createEvent("HTMLEvents");
    event.initEvent(evtName, true, false);
    event.keyCode = keyCode;

    for (var i in modifiers) {
        event[i] = modifiers[i];
    }
    document.dispatchEvent(event);
}

function keyPress(keyCode) {
    simulateKey(keyCode)
    setTimeout(() => simulateKey(keyCode, "up"), 15);
}

рд╣рдо рдмрдЯрди рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
let _accelerator = 69;
let _brake = 81;
let _translateLeft = 65;
let _translateRigth = 68;
let _translateUp = 87;
let _translateDown = 83;

let _left = 37;
let _rigth = 39;
let _up = 38;
let _down = 40;

let _rollRigth = 105;
let _rollLeft = 103;

рдХрд┐рд╕реА рднреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рдЪрдХреНрд░ рдореЗрдВ рдХрд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ, 200 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреА рд╡реГрджреНрдзрд┐ рдореЗрдВред рд╣рдо рдПрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░реЗрдВрдЧреЗ, рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА

let index = 0;
function A() {

    index++;
    setTimeout(A, 200);
}

A();

рдЖрдЗрдП рд╕рд╛рдЗрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред

рдЗрд╕рдХреА рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдИрдПрд╕рдПрд╕ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдорд╛рдиреНрдп рдорд╛рд░реНрдХрдЕрдк рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪреА рдЧрдИ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рд╣реА рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЦреЗрд▓ рдХреЛ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рджреЗрддреЗ рд╣реИрдВ ... рдпрд╛ рд╢рд╛рдпрдж рдЗрд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдХреЗ, рдпрд╣ рдмреЗрд╡рдХреВрдлреА рдереА, рдХрд░рдирд╛ рдЖрд╕рд╛рди рдерд╛ред



рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдкреНрд░рдХрд╛рд╢ рд░реЗрдЦрд╛рдПрдБ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред


    let range = parseFloat($("#range .rate").outerText.split(' '));

    let yDistance = parseFloat($("#y-range .distance").outerText.split(' ')[0]);
    let zDistance = parseFloat($("#z-range .distance").outerText.split(' ')[0]);

    let rollError = parseFloat($("#roll .error").outerText);
    let pitchError = parseFloat($("#pitch .error").outerText);
    let yawError = parseFloat($("#yaw .error").outerText);

    let rate = parseFloat($("#rate .rate").outerText.split(' ')[0]);

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рд╛ред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдСрдлрд╝рд╕реЗрдЯ рдорд╛рди рдирд┐рдХрд╛рд▓реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдорд╛рдиреЛрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рджрд░ рдирд╣реАрдВ рд▓реА рд╣реИ, рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ ...

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рддреАрд╕рд░рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬреЛ рд╣рд░ 200 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдЬрд╣рд╛рдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ 0. рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣

рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛ред

if (rollError !== -rollSpeed) {
        const rollLimit = (Math.abs(rollError) / 10);
        if (0 < rollError && rollSpeed < rollLimit) {
            keyPress(_rollRigth);
        } else if (rollError < -0 && -rollLimit < rollSpeed) {
            keyPress(_rollLeft);
        }
    }

рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╣ рдХрд╛рдлреА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдереЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреЛрдгреАрдп рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдПред рдФрд░ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

   const zLimit = (Math.abs(yawError) / 10);
        if (0 < zDistance && zSpeed < zLimit) {
            keyPress(_translateDown);
        } else if (zDistance < 0 && -1 < zSpeed) {
            keyPress(_translateUp);
        }

рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЬрд╣рд╛рдЬ рдХреЗ рд╡рд┐рд╕реНрдерд╛рдкрди рдХреА рдЧрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

function carculateSpeed() {
    let yDistance = parseFloat($("#y-range .distance").outerText.split(' ')[0]);
    let zDistance = parseFloat($("#z-range .distance").outerText.split(' ')[0]);

    ySpeed = yPrev - yDistance;
    yPrev = yDistance;

    zSpeed = zPrev - zDistance;
    zPrev = zDistance;
    setTimeout(carculateSpeed, 1000);
}
carculateSpeed();

рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рд╣рдирд╢реАрд▓ рдирд┐рдХрд▓рд╛ред рдХреНрд▓рд╛рд╕рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕рд░реНрдХрд┐рдЯред рдФрд░ рдЬрдм рдЬрд╣рд╛рдЬ рдЖрдИрдПрд╕рдПрд╕ рд╕реЗ рдХреБрдЫ рджреВрд░реА рдкрд░ рдерд╛, рд╣рдо рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдХрд╛рдлреА рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдбрд╝ рдЧрдП [рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рддрдм рд▓рдЧрд╛ рдерд╛]ред рд▓реЗрдХрд┐рди рдЬрд╣рд╛рдЬ рдХреЗ рдкрд╛рд╕ рд╣реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╢реБрд░реВ рд╣реЛ рдЧрдИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрд╣рд╛рдЬ рдмрд╣реБрдд рд╕реЙрд╕реЗрдЬ рдерд╛ рдФрд░ 0.2 рдореАрдЯрд░ рдХреА рд╕рдЯреАрдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рдерд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЬрд╣рд╛рдЬ рдХрд╛ рдорд┐рд╢реНрд░рдг рд╣реБрдЖ рдерд╛ ... рдЖрдЗрдП рдирд┐рд░рдВрддрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ (рдорд╣рд╛рди рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде) рдореЗрдВ рдХрд╣реЗрдВ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдХреЗрд╡рд▓ рджрд╕рд╡реЗрдВ рднрд╛рдЧ рдХреЛ рджреЗрдЦрд╛ред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рд░ 200 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдмрд╣реБрдд рдордЬрдмреВрдд рдирд┐рдпрд╛рдордХ рдХреНрд░рд┐рдпрд╛рдПрдВ рдорд┐рд▓реАрдВред рд╣рдордиреЗ рдорд╛рдореВрд▓реА рд╡рд┐рдЪрд▓рди рдкрд░ рдХрдИ рдмрд╛рд░ рдмрдЯрди рджрдмрд╛рдП рд╣реИрдВред рдФрд░ рдЬрд╣рд╛рдЬ рдХреЗ рдХрд░реАрдм, рдСрдлрд╕реЗрдЯ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдордЬрдмреВрдд рдХрд░рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рдФрд░ рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╣рд╛рдЬ рдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╣рд┐рд▓рд╛ рджрд┐рдпрд╛ ... рдЗрд╕рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЗ рдЖрдпрд╛рдо рдореЗрдВ рд╡реГрджреНрдзрд┐ ...

рд▓рд╛рдкрддрд╛ рд╕рдЯреАрдХрддрд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рджреВрд╕рд░реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ, рдореИрдВрдиреЗ рдЦреБрдж рд╣реА рдЧрддрд┐ рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдФрд░ рд╣рд╛рдБ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЖрдВрджреЛрд▓рди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реБрдЖ ... рдЖрдВрджреЛрд▓рди

рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рдХреНрдпрд╛ рд╣реИ? рдареАрдХ рд╣реИ, рд╣рдо рдмрд╛рд╣рд░реА рд╕реНрдерд╛рди рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣рдо рдЬрд╣рд╛рдЬ рдХреЛ рдПрдХ рд╡рд┐рдорд╛рди рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рддреНрд╡рд░рдг рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рд╣рдо рдмрдЯрди рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ, рдЖрдВрджреЛрд▓рди рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдмрд╛рд╣рд░реА рдЬрдЧрд╣ рдореЗрдВ, рд╡реИрдХреНрдпреВрдо рдХреЗ рдХрд╛рд░рдг, рдХреЛрдИ рдкреНрд░рддрд┐рд░реЛрдз рдирд╣реАрдВ рд╣реИред рдФрд░ рдЬреИрд╕реЗ рд╣реА рд╣рдордиреЗ рдПрдХ рдЖрд╡реЗрдЧ рджрд┐рдпрд╛ (рдПрдХ рдмрдЯрди рджрдмрд╛рдХрд░) рдЬрд╣рд╛рдЬ рдЗрд╕ рдЧрддрд┐ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд▓рдЧрд╛ ... рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рд░реЛрдХрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рд░реЛрдХрдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ - рдЖрдкрдХреЛ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдЖрд╡реЗрдЧ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╕рдорд╛рдзрд╛рди рдХреЗ рджреВрд╕рд░реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рддреНрд░реБрдЯрд┐ рдХреА рдмрдврд╝реА рд╣реБрдИ рд╕рдЯреАрдХрддрд╛ рдиреЗ рдореБрдЭреЗ рдЧрддрд┐ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдпрд╛ ...

рдФрд░ рдпрд╣рд╛рдВ рд╣рдореЗрдВ "рдХрдореНрдкрд╛рд╕" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдХрд┐рд╕реА рднреА рдЬрд╣рд╛рдЬ / рдкреЛрдд рдХреЗ рдХрдкреНрддрд╛рди рдХреЛ рдЕрдЧреНрд░рд┐рдо рдорд╛рд░реНрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╡рд╣ рдмрдВрджрд░рдЧрд╛рд╣ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕реЗ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреА рдЖрдЬреНрдЮрд╛ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЧрд╣рдиреЗ рдХреЗ рдЦрд░рд╛рдм рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рд╣рдореЗрдВ рдмрд╕ рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред

рд╣рдореЗрдВ рдорд╛рд░реНрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХрдкреНрддрд╛рди рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреА рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрд╕рддрдд рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдХрдореНрдкрд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рд╡рд╣реА рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЖрдЧреЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдмрдЯрди рдкреНрд░реЗрд╕ рдХреЗ рдкрд╛рдВрдЪ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рдпрд╛ рдирд╣реАрдВред

    if (index % 5 === 0) {
        calculatePath(roll, rollError);
        calculatePath(pitch, pitchError);
        calculatePath(yaw, yawError);
        calculatePath(y, yDistance);
        calculatePath(z, zDistance);
    }

CarculatePath рдлрд╝рдВрдХреНрд╢рди , рдЙрдирдХреЗ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдЪрд▓рди рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, 5 рдЪрд░рдгреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдЗрд╕ рд╡рд┐рдЪрд▓рди рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП 0. рдЗрд╕ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдЬрд░реВрд░реА рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЧреНрд░рд┐рдб рдореЗрдВ рдХрд╝реАрдорддреА рд╢реВрдиреНрдп рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

function calculatePath(data, value) {
    data.path = [];
    if (data.prev === value) {
        data.speed = 0;
    }
    for (let i = 0; i < 5; i++) {
        if (0 < value + data.speed * (i + 1)) {
            data.speed -= 0.1;
            data.path.push(-1);
        } else if (value + data.speed * (i + 1) < -0) {
            data.speed += 0.1;
            data.path.push(1);
        } else if (i > 0) {
            if (0 < data.speed) {
                data.speed -= 0.1;
                data.path.push(-1);
            } else if (data.speed < 0) {
                data.speed += 0.1;
                data.path.push(1);
            } else {
                data.path.push(0);
            }
        } else {
            data.path.push(0);
        }
    }
    data.prev = value;
}

рдмрд╕ рдЗрддрдирд╛ рд╣реА, рд╣рдо рд╣рд░ "рдмрд░рд╛рдмрд░" рд╕реЗрдХрдВрдб (рдЗрдВрдбреЗрдХреНрд╕% 5 === 0) рдХреЗ рдорд╛рд░реНрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдм рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕ рдХреЛрд░реНрд╕ рдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


 let rollStep = roll.path[index % 5];
    if (0 < rollStep) {
        keyPress(_rollLeft);
    } else if (rollStep < 0) {
        keyPress(_rollRigth);
    }

    let pitchStep = pitch.path[index % 5];
    if (0 < pitchStep) {
        keyPress(_up);
    } else if (pitchStep < 0) {
        keyPress(_down);
    }

    let yawStep = yaw.path[index % 5];
    if (0 < yawStep) {
        keyPress(_left);
    } else if (yawStep < 0) {
        keyPress(_rigth);
    }

    let yStep = y.path[index % 5];
    if (0 < yStep) {
        keyPress(_translateRigth);
    } else if (yStep < 0) {
        keyPress(_translateLeft);
    }

    let zStep = z.path[index % 5];
    if (0 < zStep) {
        keyPress(_translateUp);
    } else if (zStep < 0) {
        keyPress(_translateDown);
    }

рдПрдХрдорд╛рддреНрд░ рдЧрдгрдирд╛ рдЬреЛ рдкрд╣рд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рдж рд╕реЗ рдмрдЪ рдЧрдИ рд╣реИ рд╡рд╣ рдЬрд╣рд╛рдЬ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред

рдпрд╣ рд╕рдм рдареАрдХ рд╣реИ, рд╣рдо рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рдЧрддрд┐ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ

    const rangeLimit = Math.min(Math.max((Math.abs(range) / 100), 0.05), 2);
    if (-rate < rangeLimit) {
        keyPress(_accelerator);
    } else if (-rangeLimit < -rate) {
        keyPress(_brake);
    }

рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рддрд╣рдд рдкреВрд░рд╛ рдХреЛрдб рд╣реИред рдЖрдк рд╡реЗрдмрд╕рд╛рдЗрдЯ iss-sim.spacex.com рдкрд░ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕реНрд╡рдпрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

рдкреВрд░реНрдг рдХреЛрдб
function simulateKey(keyCode, type, modifiers) {
    var evtName = (typeof (type) === "string") ? "key" + type : "keydown";
    var modifier = (typeof (modifiers) === "object") ? modifier : {};

    var event = document.createEvent("HTMLEvents");
    event.initEvent(evtName, true, false);
    event.keyCode = keyCode;

    for (var i in modifiers) {
        event[i] = modifiers[i];
    }
    document.dispatchEvent(event);
}

function keyPress(keyCode) {
    simulateKey(keyCode)
    setTimeout(() => simulateKey(keyCode, "up"), 15);
}

let _accelerator = 69;
let _brake = 81;
let _translateLeft = 65;
let _translateRigth = 68;
let _translateUp = 87;
let _translateDown = 83;

let _left = 37;
let _rigth = 39;
let _up = 38;
let _down = 40;

let _rollRigth = 105;
let _rollLeft = 103;

let index = 0;

roll = {
    path: [0, 0, 0, 0, 0],
    prev: 0,
    speed: 0,
}

pitch = {
    path: [0, 0, 0, 0, 0],
    prev: 0,
    speed: 0,
}

yaw = {
    path: [0, 0, 0, 0, 0],
    prev: 0,
    speed: 0,
}

z = {
    path: [0, 0, 0, 0, 0],
    prev: 0,
    speed: 0,
}

y = {
    path: [0, 0, 0, 0, 0],
    prev: 0,
    speed: 0,
}

function calculatePath(data, value) {
    data.path = [];
    if (data.prev === value) {
        data.speed = 0;
    }
    for (let i = 0; i < 5; i++) {
        if (0 < value + data.speed * (i + 1)) {
            data.speed -= 0.1;
            data.path.push(-1);
        } else if (value + data.speed * (i + 1) < -0) {
            data.speed += 0.1;
            data.path.push(1);
        } else if (i > 0) {
            if (0 < data.speed) {
                data.speed -= 0.1;
                data.path.push(-1);
            } else if (data.speed < 0) {
                data.speed += 0.1;
                data.path.push(1);
            } else {
                data.path.push(0);
            }
        } else {
            data.path.push(0);
        }
    }
    data.prev = value;
}

function A() {
    let range = parseFloat($("#range .rate").textContent.split(' '));

    let yDistance = parseFloat($("#y-range .distance").textContent.split(' ')[0]);
    let zDistance = parseFloat($("#z-range .distance").textContent.split(' ')[0]);

    let rollError = parseFloat($("#roll .error").textContent);
    let pitchError = parseFloat($("#pitch .error").textContent);
    let yawError = parseFloat($("#yaw .error").textContent);

    let rate = parseFloat($("#rate .rate").textContent.split(' ')[0]);

    if (index % 5 === 0) {
        calculatePath(roll, rollError);
        calculatePath(pitch, pitchError);
        calculatePath(yaw, yawError);
        calculatePath(y, yDistance);
        calculatePath(z, zDistance);
    }

    let rollStep = roll.path[index % 5];
    if (0 < rollStep) {
        keyPress(_rollLeft);
    } else if (rollStep < 0) {
        keyPress(_rollRigth);
    }

    let pitchStep = pitch.path[index % 5];
    if (0 < pitchStep) {
        keyPress(_up);
    } else if (pitchStep < 0) {
        keyPress(_down);
    }

    let yawStep = yaw.path[index % 5];
    if (0 < yawStep) {
        keyPress(_left);
    } else if (yawStep < 0) {
        keyPress(_rigth);
    }

    let yStep = y.path[index % 5];
    if (0 < yStep) {
        keyPress(_translateRigth);
    } else if (yStep < 0) {
        keyPress(_translateLeft);
    }

    let zStep = z.path[index % 5];
    if (0 < zStep) {
        keyPress(_translateUp);
    } else if (zStep < 0) {
        keyPress(_translateDown);
    }

    const rangeLimit = Math.min(Math.max((Math.abs(range) / 100), 0.05), 2);
    if (-rate < rangeLimit) {
        keyPress(_accelerator);
    } else if (-rangeLimit < -rate) {
        keyPress(_brake);
    }

    index++;
    setTimeout(A, 200);
}

A();


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдм рдХреБрдЫред рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж :)



рдкреБрдирд╢реНрдЪ


рд╣рд╛рдВ, рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рд╣рд╛рдИрдкреИрди рдХрд┐рдпрд╛ рдФрд░ рдорд╕реНрддреА рдХреАред рд▓реЗрдЦ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рди рд▓реЗрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рддреНрд░реА [рдпрд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдпрд╛рддреНрд░реА] рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬреИрд╕реЗ рдЧрдЧрд╛рд░рд┐рди рдпреВрд░реА рдЕрд▓реЗрдХреНрд╕реЗрд╡рд┐рдЪ ... рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рд░реНрдЧреЗрдИ рдкрд╛рд╡рд▓реЛрд╡рд┐рдЪ рдХреЛрд░реЛрд▓реЗрд╡ рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд╛рд░реНрдп рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ , рдЬреЛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХрднреА рднреА рдЙрд╕ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХрд╛ рджреМрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд╕рдиреЗ рд╕рдкрдирд╛ рджреЗрдЦрд╛ рдерд╛ ...

All Articles