From ba9e2f6e56e3058bb6b06e930783f2b22f12a6c2 Mon Sep 17 00:00:00 2001 From: Dmitriy Antipov Date: Sun, 19 May 2024 12:23:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20levelings.ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- levelings.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/levelings.ts b/levelings.ts index 5f6199e..a2d04c9 100644 --- a/levelings.ts +++ b/levelings.ts @@ -207,8 +207,12 @@ namespace levelings { } /** - * Alignment on the line in motion. Experimental. - * Выравнивание на линии в движении. Экспериментальная. + * Alignment on the line in motion. + * Do not use if the angle to the line is large. + * Alignment is also maintained when moving backwards. + * Выравнивание на линии в движении. + * Не использовать, если угол к линии будет большой. + * Поддерживается и выравнивание при движении назад. * @param speed скорость движения, eg: 30 * @param actionAfterMotion действие после, eg: AfterMotionShort.BreakStop * @param debug отладка, eg: false @@ -286,8 +290,10 @@ namespace levelings { control.pauseUntilTime(currTime, lineAlignmentOrPositioningLoopDt); // Ждём N мс выполнения итерации цикла } music.playToneInBackground(Note.E, 100); // Сигнал для понимация, что вышли из второго цикла - chassis.stop(true); // Жёсткое торможение для теста - pause(1000); + if (debug) { + chassis.stop(true); // Жёсткое торможение для теста + pause(1000); + } a = (a / 360) * Math.PI * chassis.getWheelRadius(); // Перевести в мм пройденное значение c = Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2)); // Рассчитываем гипотенузу const alpha = Math.sin(a / c) * (180.0 / Math.PI); // Рассчитываем угол альфа в радианах и переводим в градусы