Обертається кубик в mathcad, парсинг і delphi

Так, відійдемо від теми delphi і парсеров сьогодні. Просто трохи про насущне.

Чому такий пост? Ось, наприклад, був один про 3d-движок на delphi. який дуже умовно можна таким назвати. Просто перерахунок координат, та й то не кращим способом. Тепер ми вчинимо розумнішими, але будемо вже все робити в Маткад. А що? Адже теж програмування.

Спочатку коротко про те, як малювати відрізками на графіку в MathCAD: потрібно створити два вектора одного розміру, які будуть містити координати точок, X і Y відповідно. І ці точки Маткад сам з'єднає відрізками, якщо ці вектора вказати в графіку. приклад:

Обертається кубик в mathcad, парсинг і delphi

Тепер уявімо, що справа йде так: у нас є дві системи відліку в тривимірному просторі: перша стоїть на місці, другу ми переміщаємо (див. Далі), в ній же знаходиться наш куб.

Задамо координати точок куба:

Обертається кубик в mathcad, парсинг і delphi

Зараз вже практично ніч, і нічого розумнішого такої функції не придумав :) Можна простіше, я вже так робив, але файл залишився на іншому компі. Та й добре. Маємо вісім точок:

Обертається кубик в mathcad, парсинг і delphi

Вивів чисто подивитися, в кінцевому файлі такого бути не повинно. Тепер як потрібно з'єднати ці точки, щоб було видно всі ребра куба (кілька відрізків повторюються - провести «чисто» не вийде):

Обертається кубик в mathcad, парсинг і delphi

Зрозуміло? Добре, повернемося до цього порядку трохи пізніше, коли будемо повністю виводити повернений куб. Як пам'ятаємо, ці точки знаходяться в системі, яка повернена щодо основної. Як повернена? Так звичайно ж на три кути! Припустимо, ми знаємо всі три кути, але як нам перерахувати координати точок? Все просто: використовуємо матриці повороту. Три матриці: поворот на кут по осі X, по осі Y і по осі Z, ось:

Обертається кубик в mathcad, парсинг і delphi

Детальніше про матриці повороту читай у Вікіпедії, в принципі там все досить просто виводиться. В останньому рядку на малюнку вище функція, яка видасть радіус-вектор потрібної точки, досить задати її номер і три кути.

У тривимірному просторі точки отримали, як виводити будемо? Досить однієї з проекцій, наприклад, на площину 0xy. Тепер пора поставити два вектора, де по порядку, який розписаний моїм олівцем на одній з картинок вище, будуть йти x- і y-координати точок:

Обертається кубик в mathcad, парсинг і delphi

Оптимізуйте код, якщо є бажання, мені зараз лінь. А там є що оптимізувати. Що нам ще знадобиться для анімації: змінна FRAME. Без анімації вона дорівнює нулю. Під час анімації - номеру кадру. У нас вона буде від 1 до 100. Задамо закони зміни кутів для анімації:

Поставили рандомний функції (читай навмання, авось красиво вийде обертання). Будуємо!

Обертається кубик в mathcad, парсинг і delphi

Ще не дуже переконливо? Запускаємо анімацію:

Обертається кубик в mathcad, парсинг і delphi

Схожі статті