Водіння з геометрією ===================== Функції руху та повороту XRP також можна використовувати для малювання геометричних фігур! Проїхавши певну відстань і кілька разів повернувши на певний кут, можна намалювати фігуру з будь-якою кількістю сторін. .. tip:: Щоб побачити шлях, який проїхав ваш XRP, ви можете помістити маркер для сухого стирання між колесами робота і простежити ваш малюнок на дошці. Щоб намалювати будь-який багатокутник, потрібно лише знати розмір зовнішніх кутів фігури і вирішити, якою має бути довжина сторін. Потім потрібно просто рухатися прямо на відстань, що дорівнює довжині сторони, і повертати на кількість градусів, що відповідає зовнішньому куту. Повторюйте це, поки фігура не буде завершена. .. image:: media/exterior-angle.png Трикутник -------- Для трикутника внутрішні кути дорівнюють 60 градусів, а зовнішні кути — 120 градусів. Ми можемо накреслити трикутник зі сторонами довжиною 30 см, якщо наш робот проїде прямо 30 см тричі і поверне на 120 градусів між кожним прямим рухом. .. tab-set:: .. tab-item:: Python .. code-block:: python from XRPLib.defaults import * differentialDrive.straight(30, 0.5) differentialDrive.turn(120, 0.5) differentialDrive.straight(30, 0.5) differentialDrive.turn(120, 0.5) differentialDrive.straight(30, 0.5) .. tab-item:: Blockly .. image:: media/triangle-blockly.png :width: 300 Квадрат ------ Процес обведення квадрата схожий на обведення трикутника. Внутрішні кути дорівнюють 90 градусам, тому зовнішні кути також дорівнюють 90 градусам. Зберігаючи довжину сторони 30 см, ми можемо обвести квадрат, запрограмувавши нашого робота рухатися прямо 30 см чотири рази і повертати на 90 градусів між кожним прямим рухом. .. tab-set:: .. tab-item:: Python .. code-block:: python from XRPLib.defaults import * drivetrain.straight(30, 0.5) drivetrain.turn(90, 0.5) drivetrain.straight(30, 0.5) drivetrain.turn(90, 0.5) drivetrain.straight(30, 0.5) drivetrain.turn(90, 0.5) drivetrain.straight(30, 0.5) .. tab-item:: Blockly .. image:: media/square-blockly.png :width: 300 Багатокутники -------- Ми можемо узагальнити процедуру, яка використовується для створення трикутника і квадрата, щоб створити будь-який правильний багатокутник; потрібно лише визначити зовнішній кут і вибрати довжину сторони. Однак для багатокутників з великою кількістю сторін цей процес може бути дуже нудним. Замість того, щоб повторювати один і той самий код кілька разів, ми можемо використовувати функцію, щоб спростити процес. Спочатку визначимо, яка інформація потрібна функції. Щоб прокреслити багатокутник, потрібно визначити кількість сторін і довжину кожної сторони. Ми можемо створити функцію, яка приймає ці два значення як вхідні. Функція буде рухатися на задану відстань, повертати на зовнішній кут, а потім повторювати цей процес стільки разів, скільки є сторін у фігурі. Для цього ми можемо використовувати цикл. Єдина проблема: як дізнатися величину зовнішніх кутів? На щастя, це можна легко обчислити за допомогою цього рівняння: .. math:: 360/n Зі змінною *n*, що позначає кількість сторін вашого багатокутника, це рівняння визначає кількість градусів зовнішніх кутів вашого багатокутника. Маючи цю інформацію, ви тепер можете написати функцію для відстеження будь-якого правильного багатокутника! .. tab-set:: .. tab-item:: Python .. code-block:: python from XRPLib.defaults import * def polygon(sideLength, numSides): for i in range(int(numSides)): differentialDrive.turn((360 / numSides), 0.5) differentialDrive.straight(sideLength, 0.5) .. tab-item:: Blockly .. image:: media/polygon-blockly.png :width: 450 Вітрячок -------- Тепер ми знаємо, як легко намалювати будь-який багатокутник, але можемо піти ще далі і намалювати багатокутник-вертушку. Цей візерунок складається з декількох багатокутників, що розходяться від центральної точки. Ваш XRP може виконати це, промальовуючи кілька багатокутників поспіль і трохи повертаючись між кожним новим багатокутником. Вертушка з 3 квадратів повинна виглядати приблизно так: .. image:: media/pinwheel-square.jpg :width: 240 Програмування цього може здатися складним завданням, але насправді це досить просто. Кожного разу, коли ви хочете простежити частину вертушки, вам просто потрібно викликати свою функцію багатокутника, а потім трохи повернути робота. Ми можемо обчислити величину цього повороту, розділивши 360 градусів на кількість багатокутників, які ми простежуємо, щоб зберегти рівномірний інтервал між кожним багатокутником. Повторіть цей процес стільки разів, скільки є багатокутників у вітрячку, і ваш візерунок буде готовий! .. tab-set:: .. tab-item:: Python .. code-block:: python from XRPLib.defaults import * def pinwheel(sideLength, numSides, numShapes): for i in range(numShapes): polygon(sideLength, numSides) drivetrain.turn(360 / numShapes, 0.5) .. tab-item:: Blockly .. image:: media/pinwheel-blockly.png :width: 450