Що таке вектори?
Вектори - це набори координат різної розмірності. Кожна координата у векторі представляє деяке абсолютне положення у тому напрямку простору, в якому знаходиться вектор.
- 1-D вектор буде {1} . Це може бути, наприклад, позиція при X = 1. Або час t = 1.
- 2-D вектор буде {-4,3} . Це може бути, наприклад, положення на -4 на осі X і 3 на осі Y. Це також може бути температура (3 градуси) у положенні (-4 метри) назад на осі X.
- 3-D вектор буде {1,2,3} . Це може бути положення в просторі 1 вздовж осі X, 2 назад на осі Y і 3 вгору по осі Z. Або це може бути 1 червоний, 2 зелений та 3 синій кольори. Або це може бути положення XY ( {1,2} ) у певний час T ( {3} ).
Зауважте, що у всіх випадках ми присвоювали значення векторам нашої проблеми. У той час як ви зазвичай знайдете векторів, які використовуються для геометрії в іграх, немає ніяких причин ви не можете зробити щось інше з ними.
Чому я використовую вектори?
По-перше, вам ніколи не доведеться користуватися векторами. Поки ви відстежуєте х і у, або будь-які координати, які вас цікавлять, якимось чином ви все в порядку.
Однак перевага використання векторів полягає в тому, що вони акуратно представляють такі речі, як напрямок і положення, а також мають кілька математичних операцій, визначених на них, які полегшують ваше життя.
Для простого прикладу їх розглянемо крапковий добуток .
Припустимо, у вас є радарна система в грі в стилі зверху вниз. Кожен ворог, який з’явиться в секторі РЛС (якийсь пиріг у формі 2D), повинен отримати на екрані маленьку червону крапку. Отже, вам потрібно розібратися, які вороги є у вашій радіолокаційній частині.
Ви можете перевірити, чи є вороги всередині трикутника. Ви також можете перевірити, чи містяться вороги в перетині двох напівпросторів літаків / ліній, що визначають дві сторони радіолокаційного сектора.
Або ви можете просто використовувати крапковий продукт, щоб зробити перевірку. Ось як:
- Створіть вектор, що йде від центру радара назустріч "передній частині радара". Нормалізуйте це.
- Створіть вектор, що йде від центру радіолокатора до об'єкта, на який ми хочемо перевірити радіолокаційну видимість. Нормалізуйте це.
- Візьміть крапковий добуток двох нормалізованих векторів.
- Візьміть аркоскозин цього виробу і перевірте, чи не менший він від половини кута ширини радара. Якщо це так, намалюйте шматочок.
Це дуже зручно, а також тепер ви можете легко мати радари, які вказують у різні боки (просто змініть вектор вперед) та мають різну ширину (просто змініть кут ширини радара) - і ви можете повторно використовувати той самий код і для цих випадків !
Чому ще я використовую вектори?
Якщо ви перебуваєте в двовимірному режимі, можливо, найкращий спосіб досягти складних ефектів і рухів (спінінг, масштабування тощо) - використовувати графік сцени. У планети є орбітальний корабель, на кораблі - орбітальний безпілотник. Розрахунок для цього без використання векторної математики дійсно, дуже потворний.
За допомогою векторної математики ми представляємо кожну як точку та матрицю перетворення 3x3. Планета використовує свою трансформацію, корабель використовує свою трансформацію і трансформацію планети, і безпілотник використовує свою трансформацію і перетворення корабля і трансформацію планети.
Коли планета рухається, ви змінюєте її перетворення, і корабель і безпілотник автоматично розміщуються «безкоштовно». Набагато чистіший код.
Досі не переконаний.
Вектори також є власним представленням для положення, геометрії та руху, якими користуються майже всі графічні бібліотеки - і, звичайно, OpenGL та DirectX. Ви, швидше за все, не підете без використання ними.
Висновок
Вектори - це потужний інструмент для написання чіткого коду, який вирішує геометричні задачі чисто та елегантно.