Как складывать вектора
Как складывать вектора
Сложение и вычитание векторов
Существование: Имеем два следующих случая:
Вектор не является нулевым.
Из данного выше построения сразу же будет следовать единственность данного вектора.
Сумма векторов. Сложение векторов. Правило треугольника
Сложение векторов выполняется по правилу треугольника или по правилу параллелограмма.
Такая операция выполняется по правилу многоугольника.
Коммутативный закон сложения
Ассоциативный закон сложения
Сумма векторов в координатах
При сложении двух векторов соответствующие координаты складываются.
Отметим несколько свойств сложения двух векторов:
Для произвольного вектора выполняется равенство
Для произвольных точек справедливо следующее равенство
Замечание Таким способом также можно строить сумму любого числа векторов. Тогда оно будет носить название правила многоугольника.
Разность векторов. Вычитание векторов
Разностью двух векторов и называется вектор при условии:
, если
Разность векторов и равна сумме вектора и противоположного вектора :
Разность двух одинаковых векторов равна нулевому вектору :
Длина нулевого вектора равна нулю:
Разность векторов в координатах
При вычитании двух векторов соответствующие координаты также вычитаются.
Умножение вектора на число
Определение Произведением вектора на действительное число называется вектор удовлетворяющий следующим условиям:
Длина вектора равна ;
Векторы и сонаправлены, при и противоположно направлены, если
Операции с векторами
Как сложить и перемножить векторы (и зачем).
Мы постепенно показываем вам математику за пределами школьной программы. Начинали со знакомства с векторами, теперь сделаем следующий шаг.
Напомним основные мысли:
С векторами можно совершать некоторые математические операции. Вот о них и поговорим.
Правильно — векторы
Математики часто говорят во множественном числе «вектора», но по словарю правильно «векторы». Это такой профессиональный жаргон, как «договора», «бухгалтера» и «сервера». Мы будем использовать «векторы», но если вы окажетесь в постковидном математическом баре, лучше говорите «вектора».
Сложение
Представим четыре вектора, которые лежат в двухмерном пространстве и пока что не связаны между собой. Нарисуем эти векторы и обозначим их буквами X, Y, Z, K.
Поскольку векторы находятся в одном пространстве, координаты каждого состоят из одинакового количества чисел. У нас пример с двухмерным пространством и два числа. Выглядеть это будет так: X = (6, 4); Y = (3, −2); Z = (−7, −5); K = (−10, 4).
Векторы X, Y, Z, K в двухмерном пространстве
Если у нас несколько векторов с одинаковым количеством чисел, то эти числа можно поэлементно складывать. Для этого мы берём первое число одного вектора, складываем его с первым числом другого вектора и так далее.
Предположим, нам нужно сложить векторы X и Y.
X = (6, 4)
Y = (3, −2)
X + Y = (9, 2)
Вроде просто: складываешь последовательно все координаты, результаты сложения складываешь в исходные коробочки. Так можно делать с любым количеством координат. Помните, что вектор — это необязательно стрелка в двумерном пространстве. Она может быть и в десятимерном пространстве — с точки зрения математики это неважно.
Например, вот сложение векторов с пятью координатами:
Интуитивное изображение сложения
Для интуитивного восприятия удобно использовать векторы с двумя координатами. Их удобно рисовать на координатной плоскости и таким образом смотреть на геометрию.
Например, можно на плоскости показать, как будет работать сложение двух векторов. Для этого есть два метода: метод треугольника и метод параллелограмма.
Метод треугольника: ставим векторы Х и Y в очередь друг за другом. Для этого берём вектор Х, ставим за ним вектор Y и получаем новый вектор. Новый вектор начинается в хвосте вектора Х и заканчивается на стрелке вектора Y. Этот вектор — результат сложения. Представьте, что это ребёночек двух векторов.
Сложение векторов по методу треугольника: X = (6, 4); Y = (3, −2); Х + Y = (9, 2)
Чтобы воспользоваться методом параллелограмма, нам нужно поставить векторы Х и Y в одну исходную точку. Дальше мы дублируем векторы Х и Y, формируем параллелограмм и получаем новый вектор. В новом векторе соединяем исходную точку с исходной точкой дублирующих векторов — стрелка проходит посередине параллелограмма. Длина нового вектора — это сумма векторов Х и Y.
Сложение по методу параллелограмма и треугольника даёт одинаковый результат. Поэтому выбирайте вариант, который больше подходит под задачу.
Вычитание
Вычитание векторов немного сложнее. Чтобы вычесть векторы, нужно «развернуть» вычитаемый вектор и сложить его с исходным. «Развернуть» — то есть направить в обратную сторону, «перевернув» знаки координат. Получится конструкция вроде такой: Х + (−Y)
Дальше используются правила сложения. Пошагово это выглядит так:
Теперь посмотрим, как выглядит вычитание векторов на графике:
Вычитание векторов по методу треугольника: X = (6, 4); −Y = (−3, 2); X + (−Y) = (3, 6)
Вычитание векторов по методу параллелограмма: X = (6, 4); −Y = (−3, 2); X + (−Y) = (3, 6)
Длина вектора
Длина вектора — это одно число, которое измеряется расстоянием от кончика до стрелки вектора. Длину вектора нельзя путать с координатами. Координаты — это несколько чисел, которые указывают на расположение стрелки вектора. По координатам можно определить только конечную точку вектора. Например, если X = (6, 2), то стрелка будет находиться в точке 6 по оси Х. Или другой пример: если Y = (6, 5), то стрелка этого вектора будет находиться в точке 5 по оси Y.
Предположим, нам известны начальные точки векторов X и Y. Пусть это будет точка 2 по оси X и точка 2 по оси Y. Так мы можем легко посчитать длину отрезков:
X = 6 − 2 = 4
Y = 5 − 2 = 3
Иногда приходится рассчитывать длину третьего вектора, который привязан к двум другим векторам. Это легко сделать с помощью теоремы Пифагора — это когда квадрат гипотенузы равен сумме квадратов катетов. В нашем случае катетами будут длины векторов X и Y. Вспоминаем школьную формулу и считаем:
|C|2 = 42 + 32 = 25
|C| = √25 = 5 Длина вектора считается по формуле прямоугольного треугольника. Чтобы было проще представить — перенесите векторы на систему координат
Это формула для двумерного пространства. В трёхмерном пространстве формула похожая: нужно сложить квадраты трёх координат и вычислить квадратный корень из суммы.
В пространстве с большим числом измерений формула выглядит сложнее, но по сути то же: складываем все квадраты координат и получаем квадратный корень из этой суммы.
Умножение и деление вектора на число
Умножение и деление позволяют изменить длину и направление вектора. Если мы умножим вектор Х на три, то увеличим его длину в три раза. Если умножим на минус три — увеличим длину и изменим его направление на противоположное.
Умножение вектора на число
Для деления сохраняются аналогичные правила. Делим вектор Х на три и сокращаем длину в три раза. Делим на минус три — сокращаем и разворачиваем.
Деление вектора на число
Да вроде несложно!
Пока ничего сложного. Но если углубляться, вы узнаете, что:
Что дальше
В следующей статье рассмотрим линейную зависимость векторов. Чтобы не скучать — посмотрите интервью с Анастасией Никулиной. Анастасия сеньор-дата-сайентист в Росбанке и по совместительству блогер с интересной историей.
Как складывать векторы
Сложив два вектора, в результате получим новый вектор.
Векторы могут располагаться один относительно другого:
Складываем параллельные векторы
Если векторы параллельны, складывать так:
Примечание:
В этом уравнении над буквами используются значки векторов. Эти значки указывают на то, что действия выполняются с помощью геометрии. То есть, учитывается направление векторов.
Важно! Любое выражение, записанное в векторном виде, учитывает направление векторов.
Это можно пояснить так:
Если векторы направлены в противоположные стороны, то результат сложения будет сонаправлен с более длинным вектором.
Складываем не параллельные векторы
Если векторы не параллельны (см. рис. ), для их сложения пользуются одним из двух правил:
Примечание:
Правило параллелограмма удобно применять к векторам, выходящим из одной общей точки (начала векторов совмещены).
Правило треугольника
К концу первого вектора приложить начало второго вектора
Из свободного начала к свободному концу провести вектор
Правило параллелограмма
Совместить начала векторов
Провести пунктиры, чтобы получить параллелограмм
Из точки, в которой находятся начала провести диагональ
Как вычитать векторы
Вычтем один вектор из второго вектора. В результате получим новый вектор.
Вычитание заменяют сложением. Складывают вектор с противоположно направленным вектором.
Складываем и вычитаем векторы, используя их координаты
Когда известны координаты двух векторов, сложение или вычитание провести достаточно легко. Для этого нужно сложить или вычесть соответствующие координаты векторов.
Для удобства обычно выписывают один вектор под другим.
Примеры сложения векторов в физике
Напоминание:
Складывать и вычитать можно только те векторы, которые имеют одинаковую размерность. То есть, длина которых измеряется в одинаковых единицах.
Рассмотрим формулу связи между начальной и конечной скоростями при равноускоренном движении
\( \vec
Примечания:
— Скорость всегда направлена в ту сторону, в которую тело движется (в направлении движения тела).
— Ускорение направлено в сторону действия силы (из второго закона Ньютона).
Обратите внимание: Направление силы не всегда будет совпадать с направлением, в котором тело двигалось изначально.
Силу можно направить в любую сторону. Она будет толкать или тянуть тело в ту сторону, в которую она направлена. Поэтому, конечная скорость \( \vec
Векторы складывают с помощью геометрии, то есть, учитывают их направления.
Поэтому, формула \( \vec
Сложение векторов. Векторная сумма. Правила сложения векторов. Геометрическая сумма. Он-лайн калькулятор.
Сложение векторов. Векторная сумма. Правила сложения векторов. Геометрическая сумма. Он-лайн калькулятор
Покоординатное сложение векторов.
Тогда координаты вектора, получившегося при сложении этих двух векторов вычисляются по формуле:
В двумерном случае все абсолютно анологично, просто отбрасываем третью координату.
Теперь перейдем к геометрическому смыслу сложения двух векторов:
При сложении векторов нужно учитывать и их числовые значения, и направления. Есть несколько широко используемых методов сложения:
Правило параллелограмма. Сложение векторов по правилу параллелограмма.
Процедура сложения векторов по правилу параллелограмма заключается в следующем:
Правило треугольника. Сложение векторов по правилу треугольника.
Сложение векторов по правилу треугольника заключается в следующем:
Тригонометрический способ. Сложение векторов тригонометрическим способом.
Сила 1 равна 5кН и воздействует на тело в направлении, на 80 o отличающемся от направления действия второй силы, равной 8 кН.
Результирующая сила вычисляется следующим образом:
Угол между результирующей силой и первой силой равен:
А угол между второй и результирующей силой можно посчитать следующим образом: as
Он-лайн калькулятор сложения векторов.
Калькулятор ниже может быть использован для любвых векторных величин ( силы, скорости и т.д.) Точка начала вектора совпадает с началами обоих исходных векторов.
Консультации и техническая
поддержка сайта: Zavarka Team
Простой способ складывать и вычитать вектора
Сложение (и особенно вычитание) векторов – это классика, как простые вещи иногда объясняют сложным языком. Если я спрашиваю абитуриента, как складывать (или вычитать) вектора, он нередко говорит: «Ну, правило параллелограмма, надо начало первого соединить с концом второго… Или наоборот…». В общем, дети вынуждены зазубривать правила, а все зазубренное, но не понятое, очень быстро забывается.
Итак, рассмотрим простой и понятный способ складывать и вычитать вектора. Допустим, надо найти вектор , равный сумме векторов
,
и
. То есть, надо найти
=
+
+
(рисунок 1)
С векторами разрешен только параллельный перенос. То есть, нельзя их поворачивать и менять их длину. А передвигать, не меняя длины и направления, можно. Теперь просто выстраиваем вектора друг за другом (рисунок 2).
Проводим стрелку из начала цепочки в конец (красная линия). Это и есть вектор суммы (рисунок 3). Все.
Тут, правда, есть один нюанс: как понимать фразу «выстраиваем вектора друг за другом»? Представьте, что по стрелкам векторов ползет жучок. Вы должны выстроить вектора так, чтобы жуку было понятно, куда ползти. Если вы выстроили вектора, например, вот так (рисунок 4):
то это не «друг за другом». Жук выползает из точки Х, двигается по стрелкам, но в точке Y ему непонятно, что делать дальше. Если вы правильно выстроили вектора «друг за другом», то жук по стрелкам проползет из начальной точки в конечную (рисунок 5).
Теперь попробуем поменять слагаемые местами и найдем =
+
+
. Как и в прошлом случае, выстраиваем вектора друг за другом (чтобы жуку было понятно) и рисуем стрелку из начала в конец пути (рисунок 6).
Как видите, суммарный вектор не зависит от очередности слагаемых. Тут как со скалярными величинами: от перемены мест слагаемых сумма не меняется. То есть, при сложении векторов их можно выстраивать в любом порядке. Результат будет одинаковым.
Фактически, тут мы нашли вектор =
+(-
)+
.
Надеюсь, теперь у вас с векторами не будет проблем. Допустим, вам встретилась задача: на рисунке 9 изображены силы, действующие на тело; найти равнодействующую.
Просто выстраиваем вектора друг за другом (чтобы жуку было понятно) в любом порядке и строим результирующий вектор из начала в конец цепочки векторов (рисунок 10).
Красная стрелка на рисунке 10 – это вектор равнодействующей силы.
Понравилась статья? Размести ссылку на сайт в социальных сетях
Что нужно знать о правилах сложения векторов
Свойства операции сложения векторов
Запишем свойства сложения на примере данных векторов, которые можно использовать при решении задач в классе:
Правила сложения векторов нередко используют в физике для определения суммарной силы, действующей на объект, описания законов, методов и взаимосвязи разных величин.
Правило треугольника для суммы векторов
Правило параллелограмма для суммы векторов
Правило параллелограмма для сложения векторов. В том случае, когда векторы a ¯ и \bar являются неколлинеарными, складывать их следует путем приведения к единой начальной точке и построения на них геометрической фигуры в виде параллелограмма. Диагональ полученного многоугольника в виде параллелограмма, которая имеет со складываемыми векторами \bar и \bar одно начало, является результатом сложения данных векторов.
Задачи с примерами решения
Дано несколько векторов:
Требуется вычислить сумму данных векторов в пространстве.
Воспользуемся стандартной формулой сложения двух векторов, то есть найдем сумму их координат по теореме:
Доказать утверждение, согласно которому два противоположных вектора в сумме дают нулевой вектор.
Предположим, что имеется некий вектор:
a ¯ = a 1 ; a 2 ; a 3
Сложим полученные вектора:
Ответ: записано доказательство того, что два противоположных вектора в сумме дают нулевой вектор.
Векторы: правила сложения и вычитания
Вектор \(\overrightarrow
\(\blacktriangleright\) Два вектора коллинеарны, если они лежат на одной прямой или на двух параллельных прямых.
В противном случае векторы называются неколлинеарными.
\(\blacktriangleright\) Два коллинеарных вектора называются сонаправленными, если их направления совпадают.
Если их направления противоположны, то они называются противоположно направленными.
Правила сложения коллинеарных векторов:
\(\blacktriangleright\) Для того, чтобы сложить два сонаправленных вектора, можно отложить второй вектор от конца первого. Тогда их сумма – вектор, начало которого совпадает с началом первого вектора, а конец – с концом второго (рис. 1).
\(\blacktriangleright\) Для того, чтобы сложить два противоположно направленных вектора, можно отложить второй вектор от начала первого. Тогда их сумма – вектор, начало которого совпадает с началом обоих векторов, длина равна разности длин векторов, направление совпадает с направлением большего по длине вектора (рис. 2).
Правила сложения неколлинеарных векторов \(\overrightarrow \) и \(\overrightarrow\) :
\(\blacktriangleright\) Правило треугольника (рис. 3).
\(\blacktriangleright\) Правило параллелограмма (рис. 4).
\[\begin
Старшеклассники, которые готовятся к сдаче ЕГЭ по математике и при этом рассчитывают на получение достойных баллов, обязательно должны повторить тему «Правила сложения и вычитания нескольких векторов». Как видно из многолетней практики, подобные задания каждый год включаются в аттестационное испытание. Если у выпускника вызывают трудности задачи из раздела «Геометрия на плоскости», к примеру, в которых требуется применить правила сложения и вычитания векторов, ему обязательно стоит повторить или вновь разобраться в материале, чтобы успешно сдать ЕГЭ.
Образовательный проект «Школково» предлагает новый подход в подготовке к аттестационному испытанию. Наш ресурс выстроен таким образом, чтобы учащиеся смогли выявить наиболее сложные для себя разделы и восполнить пробелы в знаниях. Специалисты «Школково» подготовили и систематизировали весь необходимый материал для подготовки к сдаче аттестационного испытания.
Для того чтобы задачи ЕГЭ, в которых необходимо применить правила сложения и вычитания двух векторов, не вызывали затруднений, мы рекомендуем прежде всего освежить в памяти базовые понятия. Найти этот материал учащиеся смогут в разделе «Теоретическая справка».
Если вы уже вспомнили правило вычитания векторов и основные определения по данной теме, предлагаем закрепить полученные знания, выполнив соответствующие упражнения, которые подобрали специалисты образовательного портала «Школково». Для каждой задачи на сайте представлен алгоритм решения и дан правильный ответ. В теме «Правила сложения векторов» представлены различные упражнения; выполнив два-три сравнительно легких задания, учащиеся могут последовательно переходить к более сложным.
Оттачивать собственные навыки по таким, например, заданиям, как задачи на координатной плоскости, школьники имеют возможность в режиме онлайн, находясь в Москве или любом другом городе России. При необходимости задание можно сохранить в разделе «Избранное». Благодаря этому вы сможете быстро найти интересующие примеры и обсудить алгоритмы нахождения правильного ответа с преподавателем.
Учебники
Журнал «Квант»
Общие
Скаляры можно складывать, умножать и делить так же, как обычные числа.
Поскольку вектор характеризуется не только числовым значение, но и направлением, сложение векторов не подчиняется правилам сложения чисел. Например, пусть длины векторов a = 3 м, b = 4 м, тогда a + b = 3 м + 4 м = 7 м. Но длина вектора \(\vec c = \vec a + \vec b\) не будет равна 7 м (рис. 1).
Для того, чтобы построить вектор \(\vec c = \vec a + \vec b\) (рис. 2), применяются специальные правила сложения векторов.
А длину вектора суммы \(\vec c = \vec a + \vec b\) определяют по теореме косинусов \(c = \sqrt\), где \(\alpha\,\) – угол между векторами \(\vec a\) и \(\vec b\).
Правило треугольника
В зарубежной литературе этот метод называют «хвост к голове».
Для того чтобы сложить два вектора \(\vec a\) и \(\vec b\) (рис. 3, а) нужно переместить вектор \(\vec b\) параллельно самому себе так, чтобы его начало совпадало с концом вектора \(\vec a\) (рис. 3, б). Тогда их суммой будет вектор \(\vec c\), начало которого совпадает с началом вектора \(\vec a\), а конец — с концом вектора \(\vec b\) (рис. 3, в).
Результат не поменяется, если перемещать вместо вектора \(\vec b\) вектор \(\vec a\) (рис. 4), т.е. \(\vec b + \vec a = \vec a + \vec b\) (свойство коммутативности векторов).
а б в Рис. 4. vector-treug-1.swf «Правило треугольников» Пример 1 Увеличить Flash vector-treug-2.swf «Правило треугольников» Пример 2 Увеличить Flash Рис. 5.
При помощи правила треугольника можно сложить два параллельных вектора \(\vec a\) и \(\vec b\) (рис. 6, а) и \(\vec a\) и \(\vec d\) (рис. 7, а). Суммы этих векторов \(\vec c = \vec a + \vec b\) и \(\vec f = \vec a + \vec d\) изображены на рис. 6, б и 7, б. Причем, модули векторов \(c = a + b\) и \(f=\left|a-d\right|\).
а б Рис. 6.
а б Рис. 7.
Правило треугольника можно применять при сложении трех и более векторов. Например, \(\vec c = \vec a_1 + \vec a_2 +\vec a_3 +\vec a_4\) (рис. 8).
Правило параллелограмма
Для того чтобы сложить два вектора \(\vec a\) и \(\vec b\) (рис. 9, а) нужно переместить их параллельно самим себе так, чтобы начала векторов \(\vec a\) и \(\vec b\) находились в одной точке (рис. 9, б). Затем построить параллелограмм, сторонами которого будут эти вектора (рис. 9, в). Тогда суммой \(\vec a+ \vec b\) будет вектор \(\vec c\), начало которого совпадает с общим началом векторов, а конец — с противоположной вершиной параллелограмма (рис. 9, г).
а б
в г Рис. 9. vector-paral-1.swf «Правило параллепипеда» Увеличить Flash Рис. 10.
Вычитание векторов
Для того чтобы найти разность двух векторов \(\vec a\) и \(\vec b\) (рис. 11) нужно найти вектор \(\vec c = \vec a + \left(-\vec b \right)\) (см. Умножение вектора на скаляр) по правилу треугольника (рис. 12) или по правилу параллелограмма (рис. 13).
Рис. 11
а б в Рис. 12.
а б
б в Рис. 13.
Общие сведения
Понятие вектор используется как в физике, так и в математике. С его помощью обозначают действие различных сил, указывают их направление, определяют движение. По сути, это величина, противопоставляемая массе, объёму, плотности, температуре, то есть «скалярам». Согласно определению вектор — это отрезок, имеющий строгое направление. Точку, из которой он выходит, называют начальной, а в которой заканчивается — конечной.
Обозначают отрезок помощью заглавных латинских букв, сверху которых ставится чёрточка. Рисуют же его с помощью прямой ограниченной линии.
Например, запись AB обозначает, что точка A является началом, а B концом. В некоторых случаях для кратности отрезки допустимо обозначать одной маленькой буквой, так: AB = a.
Векторная запись используется тогда, когда невозможно величины описать с помощью одного числа. Численное значение выражение определяется длиной отрезка или его модулем. Эта величина является скалярной. В том случае если начало и конец ограниченной линии совпадают, то говорят о нулевой линии. Обозначают её цифрой 0.
Векторы, расположенные на плоскости или в пространстве, по отношению друг к другу могут быть:
Так как вектора — это выражения, то с ними можно выполнять различные действия. Их возможно складывать, вычитать, умножать на число. При работе с векторными величинами используют декартовую систему координат. В ней прямую замкнутую линию раскладывают по базису и определяют координаты её точек. Другими словами, выполняют проекции отрезков на оси. Непосредственно за базис берут орты.
Если известны начальные координаты и конечные, то текущие вычисляют путём вычитания из последних первые. Существующая возможность записать любое геометрическое свойство, используя координаты, позволяет отойти от геометрии и использовать для вычислений алгебру.
Сложение координат
Существует простое правило применимое для направленных отрезков и позволяющее найти их сумму. Заключается оно в следующем: если необходимо прибавить один вектор к другому описывающийся каждый своими координатами, достаточно сложить соответствующие их орты. Например, предположим есть два вектора a и b. Первый отрезок имеет координаты (ax; ay), а второй (bx;by). При их сложении получится новый вектор c. В результате действия его координаты будут c (ax + bx; ay + by).
Это теорема доказывается просто. Пусть даны отрезки f (x 1; y 1) и g (x 2; y 2). В системе координат относительно рассматриваемых векторов получится: f = x 1 a + y 1 b; g = x 2 a + y 2 b. Тогда искомая сумма будет: f + g = x1a + y1b + x2a + y2b = a (x 1 + x 2) + b (y 1 + y 2). Что и нужно было доказать. Это правило применимо к векторам имеющим любые координаты. Например, пусть есть a (1; 2), b (-3; 1). Нужно найти их сумму. С помощью формулы сложения получится новый направленный отрезок с координатами a + b = (1 — 3; 2 + 1) = (-2; 3).
Как и при операциях с простыми числами при работе с векторными выражениями используют различные их свойства. Существует три правила сложения векторов:
Следует отметить, что при сложении двух противоположных ограниченных прямых сумма будет равняться нуль-вектору: a + (-a) = 0. Это утверждение не требует доказательства, так как здесь используется фундаментальный закон алгебры — правило знаков.
Правило параллелограмма
По сути, все операции с векторными выражениями сводятся к их приращению или уменьшению. Если координаты точек неизвестны, то алгебраический метод складывания не подходит. В таком случае используют геометрические операции. Одним из способов, позволяющих сложить два неколлинеарных вектора, является правило параллелограмма или прямоугольника при перпендикулярном направлении складываемых отрезков.
Сформулировать способ можно следующим образом: если имеются два отрезка не лежащие на параллельной прямой и не принадлежащие ей, то нужно достроить данные вектора до параллелограмма. Для этого необходимо взять произвольную точку и отложить от неё отрезок AB равный первому вектору, и AD совпадающий со вторым. При этом необходимо придерживаться соотношения геометрии наклона. Затем достроить необходимые параллельные прямые таким образом, чтобы образовался параллелограмм ABCD. Если в такой фигуре провести диагональ, то её длина и будет равняться сумме складываемых отрезков.
Доказать правильность утверждения можно следующими доводами. Пусть имеются две ограниченные линии a и b. От точки A можно отложить первый отрезок конец, которого обозначить как B, и второй, с точкой D. Теперь через D и B возможно провести соответственно параллельные прямые AB и AD. Место, в которой они пересекутся, пусть будет обозначено как С. Тогда используя признак параллельности двух пар прямых в фигуре ABCD, можно утверждать, что это параллелограмм. Вектор AC = a + b. Это следует из равенства отрезков AD = BC и теоремы о подобных треугольниках.
Пример задания. Определить, чему равна сумма двух отрезков длиной 2 см и 1 см расположенные друг к другу под углом 45. Для того чтобы воспользоваться правилом, нужно взять листочек в клеточку и построить два вектора, исходящие из одной точки O. Тогда первый отрезок будет OA, а второй OB. Затем достроить прямые таким образом, чтобы на рисунке получился параллелограмм. Новая полученная точка пусть будет D. Теперь с помощью линейки можно измерить диагональ фигуры, длина которой и будет искомой суммой. В ответе должно получиться, что OA + OB = OD = 3 см.
Простыми словами это правило можно рассказать так: сумма двух отрезков будет равняться диагонали параллелограмма, построенного на исходных векторах. Эта теорема чаще используется не в геометрии, а физике, например, при сложении сил.
Альтернативные методы
Операцию по сложению двух векторов можно выполнить и с помощью правила треугольника. Делается это так. Выбирается любая точка на плоскости, от которой откладываются два вектора. При этом необходимо соблюдать их размерность и наклон по отношению друг к другу. Затем две конечные точки соединяют прямой. Её длина и будет искомой величиной. То есть в итоге должна получиться равнобедренная фигура.
Применение метода сложения векторов по правилу треугольника позволяет довольно легко находить сумму для трёх и более отрезков. Для этого сначала вычисляют результат сложения для двух любых линий, а после прибавляют к полученной ограниченной прямой третью и так далее.
При сложении нескольких векторов удобно выполнять следующую последовательность построений:
Этот способ получил название метод многоугольника. Он довольно часто применяется на практике, позволяя, довольно просто выполнить нахождение суммы. Из правила треугольника, а, следовательно, и многоугольника, вытекает следствие, которое подтверждает, что если складывается отрезок с нулевым векторным выражением, то в ответе получится длина, совпадающая со значимым слагаемым.
Следует отметить, что методы используются только, если направление отрезков является сонаправленным.
Если же отрезки неколлинеарные, то от конца одного откладывается другой. Тогда искомая сумма будет равняться длине линии, первой точкой которой будет начало одной векторной прямой, а конец совпадать с точкой, завершающей другую. То есть сумма — это отрезок, начало которого совпадает с началом обеих линий, а длина равна разности их длин, при этом направление его будет совпадать с тем что больше по длине.
Сложение и вычитание векторов
Средняя оценка: 4.6
Всего получено оценок: 635.
Средняя оценка: 4.6
Всего получено оценок: 635.
Сложение и вычитание векторов – это одно из немногих действий на стыке математики и геометрии. Дело в том, что выражения из векторов можно складывать и вычитать арифметически, ориентируясь только на буквенные обозначения векторов, но для того, чтобы получить числовой результат или его геометрическое отображение придется выполнить ряд построений. Разберемся подробнее в правилах сложения и вычитания векторов.
Что такое вектор?
Вектор – это отрезок с направлением.
Вектор и луч часто путают и допускают грубую ошибку. Вектор – это направленный отрезок, а любой отрезок имеет величину, то есть его можно измерить линейкой. Луч имеет начало и направление, но он бесконечен, то есть измерить его невозможно. Так же, как нельзя и складывать лучи между собой или луч с вектором.
Вектор иногда помещают в декартову систему координат. Тогда, проведя перпендикуляры к каждой из осей, можно получить проекции вектора на оси Ох и Оу. Каждая из этих проекций будет отрезком. При этом, если из проекций составить прямоугольник, то его гипотенуза и будет начальным вектором. Это иногда используется при сложении векторов.
Рис. 1. Вектор в системе координат.
Сложение и вычитание векторов
Способов и методов сложения векторов всего два. Существует и третий, но его не считают отдельным методом, так как он вытекает из первых двух. Но мы его рассмотрим отдельно, чтобы не возникало вопросов при дальнейшем изучении темы.
Правило многоугольника
Для того, чтобы сложить векторы правилом многоугольника, необходимо параллельным переносом совместить конец первого вектора с началом второго, конец второго с началом третьего и так далее, пока не кончатся векторы, которые необходимо сложить.
После этого нужно начало первого вектора соединить с концом последнего последнего вектора и указать направление. Получившийся вектор будет направлен в сторону последнего из участвовавших в сложении.
Складывать таким способом можно любое количество векторов. Если так складывается только два вектора, то способ называют правилом треугольника
Нужно понять и запомнить, что у отрезка одна определяющая величина: размер. У вектора определяющих величин две: размер и направление. Поэтому нельзя менять направление вектора и его размер. Любые действия нужно осуществлять с помощью параллельного переноса, то есть без изменения направления.
Правило параллелограмма
Правило параллелограмма сложнее, его можно применять только для 2 векторов. Если вам нужно этим способом сложить большее количество векторов, например, три, то действие выполняют в следующем порядке:
Само правило параллелограмма заключается в том, что начала двух векторов совмещаются. После этого получившуюся фигуру достраивают до параллелограмма. Диагональ, которая выходит из начала двух векторов и есть результат сложения. Вектор должен быть направлен в противоположную сторону от совмещенного начала двух векторов.
Для того чтобы вычесть векторы любым способом, направление вектора, который является вычитаемым, меняют на противоположное. Получившиеся векторы складывают любым из методов.
Рис. 3. Правило многоугольника.
Сложение в декартовой системе
В декартовой системе все векторы раскладывают на проекции, после чего отрезки проекций складывают: проекции на ось Ох отдельно, на ось Оу отдельно. После из получившихся двух проекций снова собирают вектор.
Что мы узнали?
Мы узнали, что такое вектор. Поговорили о правилах сложения и вычитания векторов. Обсудили, чем отличается вектор от луча и обсудили метод действий с векторами в декартовой системе координат.
Сложение векторов по правилу параллелограмма
Правило параллелограмма — что это такое
Чтобы сложить два вектора можно воспользоваться правилом параллелограмма.
Правило параллелограмма: если два неколлинеарных вектора a и b привести к общему началу, то вектор c=a+b совпадает с диагональю параллелограмма, построенного на векторах a и b. Начало вектора c совпадает с началом этих векторов.
Кроме того, по правилу параллелограмма можно осуществлять вычитание.
Сложение векторов по правилу параллелограмма
Для того чтобы сложить два вектора по правилу параллелограмма, необходимо:
Также существуют еще два правила нахождения векторной суммы:
1. Правило треугольника.
Чтобы сложить два вектора, нужно из произвольной точки отложить первый вектор, из его конца отложить второй вектор и построить вектор, который соединит начало первого с концом второго. Полученный вектор — искомая сумма.
2. Правило многоугольника.
Чтобы сложить несколько векторов, нужно от произвольной точки отложить первый вектор, из его конца — второй вектор, из конца второго — третий, и так далее. Затем соединить начальную точку с концом последнего вектора, полученный вектор — искомая сумма.
Переместительный и сочетательный законы, доказательство
Для более ясного понимания правила параллелограмма, важно знать законы сложения векторов.
Переместительный закон: от перемены мест слагаемых сумма не меняется a+b=b+a.
От произвольной точки A отложим векторы AB=a и AD=b.
Построим параллелограмм ABCD.
По правилу треугольника заметим: AC=AB+BC, то есть равен сумме векторов a+b.
AC=AB+BC, AC=a+b⇒ a+b=b+a.
С другой стороны, AC=AD+DC, AC=b+a.
Что и требовалось доказать.
Именно переместительный закон применяется в правиле параллелограмма.
Сочетательный закон: (a+b)+c=a+(b+c).
От произвольной точки A отложим вектор AB=a, от точки B вектор BC=b, от точки C вектор CD=c.
Запишем сумму (a+b)+c через векторы:
Сумма AB+BC=AC (по правилу треугольника).
Запишем сумму a+(b+c) через векторы:
Что и требовалось доказать.
Примеры решения задач
Дан параллелограмм, построенный на векторах AB=6 см, BC=8 см. ∠B=90º. Найти сумму векторов AB+BC.
По правилу параллелограмма сумма векторов AB+BC=BD.
BD-диагональ параллелограмма. Диагональ можно найти по формуле:
ABCD — прямоугольник, так как ∠B=90º ⇒cosB=0.
Сложение и вычитание векторов
Векторы можно складывать способом параллелограмма и способом многоугольника.
Сложение векторов способом параллелограмма: сумма двух векторов а и Ъ, направленных под углом а (рис. 1.1, а), равна диагонали параллелограмма, сторонами которого являются складываемые векторы (т. е. векторы складываются геометрически).
С помощью символов эта операция записывается так: а + Ь = с.
При сложении этих векторов можно пользоваться правилом «треугольника». В этом случае к концу одного вектора приставляют начало второго (порядок сложения векторов не существен), тогда их суммой будет вектор с, начало которого совпадает с началом первого вектора, а конец — с концом второго вектора (рис. 1.2, б).
Длину вектора суммы (его модуль) определяют по теореме косинусов (рис. 1.2):
где a — угол между векторами а и Б.
Сложение векторов способом многоугольника (чаще применяется при сложении трех и более векторов): к концу первого вектора а приставляют начало второго Б, к концу второго — начало третьего сит. д., тогда результирующий вектор ё представляет собой направленный отрезок, начало которого совпадает с началом первого вектора, а конец — с концом последне-
го d (рис. 1.3). Результирующий вектор ё не зависит от последовательности, в котором складываются заданные векторы.
Сумма и разность векторов
В данной публикации мы рассмотрим, как найти сумму и разность векторов, приведем геометрическую интерпретацию, а также формулы, свойства и примеры этих действий.
Сумма векторов
Сложение векторов выполняется по правилу треугольника.
Геометрическая интерпретация:
Для сложения векторов также используется правило параллелограмма.
Формула сложения векторов
Свойства сложения векторов
1. Коммутативность: a + b = b + a
2. Ассоциативность: ( a + b ) + c = a + ( b + c )
3. Прибавление к нулю: a + 0 = a
4. Сумма противоположных векторов: a + (- a ) = 0
Разность векторов
Для вычитания векторов также применяется правило треугольника.
Формула вычитания векторов
Примеры задач
Геометрия
План урока:
Понятие вектора
Рассмотрим простейшую задачу. Корабль, двигатель которого развивает скорость 20 км/ч, плывет по течению реки, при этом скорость течения составляет 2 км/ч. Какова скорость корабля относительно берега? Очевидно, в данном случае надо сложить скорость течения и собственную скорость корабля:
20 км/ч + 2 км/ч = 22 км/ч
Теперь посмотрим на почти такую же задачу, которая отличается лишь тем, что корабль плывет уже против течения. Для ее решения скорости уже придется вычитать:
Получается, что ответ задачи во многом зависит не только от величин скоростей, но и от их направления. Возможны и более сложные случаи, когда корабль двигается на воде перпендикулярно течению или, например, под углом в 60°. Величины, при операции с которыми необходимо учитывать их направление, называют векторными величинами, или просто векторами.
Помимо скорости к ним относят ускорение, силу, импульс, напряженность магнитного и электрического поля и многие другие величины. Те же величины, для которых нельзя указать направление, называют скалярными величинами. Это масса, температура, плотность и т. п. Для выполнения действий с векторами необходимо разработать общие правила их сложения, вычитания, умножения, которые будут справедливы независимо от физической природы векторных величин. И разработать эти правила помогает как раз геометрия.
Для начала введем понятие вектора. Любой отрезок имеет два конца, которые обычно не отличают друг от друга. Однако если одну из этих точек считать началом отрезка, а другую – собственно концом, то у отрезка появится направление. В таком случае его можно считать вектором.
Часто вектора называют направленными отрезками. Обозначают их с помощью стрелок.
На этом рисунке показан вектор, начало которого находится в точке А, а конец – в точке В. При записи в формулах сначала пишут букву, означающую начало вектора, потом обозначение его конца, а над этими двумя буквами ставят стрелочку:
С практической точки зрения приходится вводить в рассмотрение особый нулевой вектор. У него начало и конец совпадают, то есть он представляет собой всего лишь одну точку:
Нулевой вектор необходим, так как нам необходимо научиться выполнять действия над векторами. Мы знаем, что в обычной алгебре используется число ноль. В векторной же алгебре аналогом нуля является как раз нулевой вектор.
Каждый вектор имеет свою длину, которая равна расстоянию между его началом и концом. То есть, если его начало находится в точке А, а конец в точке В, то длина вектора будет совпадать с длиной отрезка АВ. Обозначают длину с помощью вертикальных скобок:
Естественно, что длина нулевого вектора равна нулю.
Задание. Найдите модуль вектора, изображенного на рисунке:
Решение. Легко выполнить построение, при котором вектор окажется гипотенузой в прямоугольном треугольнике
Тогда длину вектора можно найти по теореме Пифагора:
Равенство векторов
Через начало и конец векторов можно провести прямую. В связи с этим можно ввести понятие коллинеарных векторов.
На рисунке коллинеарны вектора а и b, так как они лежат на одной прямой. Также коллинеарны с и d, так как они лежат на параллельных прямых. А вот вектора a и c неколлинеарны, так как они лежат на пересекающихся прямых.
Для пары коллинеарных векторов можно определить, являются ли они сонаправленными или противоположно направленными.
Для обозначения сонаправленных векторов используется символ «⇈», а для противоположно направленных «⇅». Можно сформулировать две очевидных теоремы о коллинеарных векторах.
Проиллюстрируем эти правила с помощью рисунка:
Особняком стоит нулевой вектор. Он представляет собой точку, а потому не имеет определенного направления. Поэтому условно его считают сонаправленным с любым другим вектором.
Теперь мы можем дать определение равенству векторов.
Задание. Найдите на картинке равные вектора.
Решение. Здесь равны вектора а, b и e. Они сонаправлены и имеют длину 6. Вектор с сонаправлен с ними, но его длина составляет только 5 клеток. Длина вектора d составляет 6 клеток, но он не сонаправлен с другими векторами. Наконец, вектор m также не сонаправлен с другими векторами и даже не коллинеарен им.
Ответ: a, b и e.
Если началом вектора является некоторая точка А, то можно сказать, что вектор отложен от точки А. Докажем важное утверждение:
Доказать его можно построением. Пусть есть вектор а и точка М. Проведем через М прямую p, параллельную вектору а. Такая прямая будет единственной. Если точка М и вектор лежат на одной прямой, то в качестве прямой p возьмем именно эту прямую. Далее от точки М можно отложить отрезки МN и МN’, длина которых будет совпадать с длиной вектора а. В результате получится два вектора,MN и MN’, один из которых будет сонаправлен с а, а другой – противоположно направленный.
Часто равные вектора, отложенные от разных точек, обозначают одной буквой. Можно считать, что это один и тот же вектор, просто приложенный к разным точкам.
Задание. АВСD – параллелограмм, диагонали которого пересекаются в точке О. Определите, равны ли вектора:
а) Отрезки АВ и DC равны, ведь это противоположные стороны параллелограмма, по той же причине эти отрезки параллельны. Видно, что они сонаправлены, значит, вектора равны.
б) Отрезки ВС и DA параллельны и равны, но эти вектора противоположно направлены, поэтому вектора НЕ равны друг другу.
в) Точка пересечения диагоналей параллелограмма делит их пополам, поэтому длины отрезков АО и ОС одинаковы. Вектора АО и ОС лежат на одной прямой, то есть они коллинеарны. При этом они ещё и сонаправлены, поэтому АО и ОС – равные векторы.
г) Вектора АС и BD лежат на пересекающихся прямых, то есть они не коллинеарны. Этого уже достаточно, чтобы считать их НЕ равными друг другу.
Ответ: а) д; б) нет; в) да; г) нет.
Сложение векторов
Пусть некоторый объект сначала находился в точке А, а потом переместился в точку В. Тогда его перемещение удобно обозначить с помощью вектора АВ. Далее пусть этот объект из точки В переместился в другую точку С.
С одной точки зрения, объект совершил сразу два перемещения, из А в В и из В в С, которые можно представить векторами:
Этот пример подсказывает нам универсальное правило, с помощью которого можно складывать вектора. Его называют правилом треугольника.
С помощью правила треугольника удобно складывать вектора, если конец одного из них совпадает с началом другого. Но что делать, если это не так? В этом случае достаточно от конца одного вектора отложить вектор, равный второму:
Задание. На рисунке показаны два вектора. Постройте в тетради их сумму и найдите длину получившегося вектора.
Решение. Перенесем вектор b к концу вектора а. Далее по правилу треугольника на удастся найти их сумму (обозначим этот вектор буквой с):
Теперь найдем длину получившегося вектора. Он является гипотенузой в прямоугольном треугольнике, причем длины катетов в этом треугольнике можно определить по рисунку, они составляют 4 и 6. Тогда длину гипотенузы можно найти по теореме Пифагора:
Отдельно рассмотрим случаи, когда складываются коллинеарные вектора. В этом случае получающаяся сумма окажется коллинеарной каждому слагаемому. Если вектора сонаправлены, то их длина итогового вектора окажется равной сумме длин складываемых векторов:
Если складываются противоположно направленные вектора, то длина их суммы окажется разностью длин складываемых векторов.
Именно по этой причине при решении простейших задач на движение корабля по реке скорость корабля и скорость течения либо складывают, либо вычитают. Дело в том, что в этих задачах складываются вектора скоростей корабля и течения. Когда судно плывет по течению, эти векторы сонаправлены, а когда плавание идет против течения, векторы оказываются противоположно направленными.
Задание. Корабль развивает в неподвижной воде скорость 12 км/ч. Он плывет по реке, скорость воды в которой составляет 5 км/ч. Найдите скорость корабля относительно берега, если:
а) судно плывет по течению;
б) судно плывет против течения;
в) судно плывет перпендикулярно течению.
Решение. Во всех случаях итоговая скорость судна является векторной суммой собственной скорости судна и течения реки:
Однако направления этих векторов различны. Найдем решение графически, с помощью построений. В первом случае вектора по условию сонаправлены:
Приложив другу к другу отрезки длиной 12 и 5, получим отрезок длиной 17. Это значит, что в первом случае скорость корабля относительно берега составит 17 км/ч.
Во втором случае вектора уже окажутся противоположно направленными:
Отрезок, соответствующий итоговой скорости, здесь уже равен 7 клеткам, значит, итоговая скорость составляет 7 км/ч.
В третьем случае вектора скоростей перпендикулярны:
При построении получился прямоугольный треугольник, вектор итоговой скорости в нем оказался в роли гипотенузы. Найти его длину можно по теореме Пифагора, ведь катеты нам известны:
Свойства сложения
Действия с векторами во многом подобны действиям с обычными числами. Напомним, что в алгебре при прибавлении к числу нуля оно не менялось:
Аналогично и при прибавлении к вектору нулевого вектора он не изменится:
Работает ли это правило с векторами? Оказывается, что да. Убедиться в этом можно, построив параллелограмм, сторонами которого являются складываемые векторы:
Видно, что диагональ параллелограмма является суммой векторов, которые соответствуют нижней и крайней правой его стороне. Они обозначены как векторы a и b, причем в данном случае к а прибавляется b. Но одновременно эта же диагональ – это сумма векторов, которые соответствуют крайней левой и его верхней стороне. Напомним, что противоположные стороны параллелограмма равны и параллельны, поэтому они и обозначены одним вектором. В этом случае уже к b прибавляется a. Результат при этом получается одинаковый, поэтому можно записать, что
На этом примере мы увидели, как работает ещё одно правило сложения векторов, который называется правилом параллелограмма. Если есть два вектора, которые необходимо сложить, то можно отложить их от одной точки, а потом достроить получившуюся фигуру до параллелограмма.
Задание. Сложите с помощью правила параллелограмма вектора, изображенные на рисунке:
Решение. Надо всего лишь построить параллелограмм, как показано на рисунке. Его диагональ и окажется искомым вектором:
Ещё один закон, использующийся в алгебре, называется сочетательным законом, записывается он так:
Оказывается, что и при действиях с векторами он также работает, то есть справедливо соотношение:
Здесь оранжевый вектор – это сумма красного (а) и синего (b) вектора. Если к оранжевому вектору добавить зеленый (с), то получится фиолетовый вектор, который, таким образом, является суммой
Желтый вектор – это сумма синего и зеленого вектора. Видно, что фиолетовый вектор представляет собой сумму красного и желтого, то есть он представляет сумму
Складывать можно любое количество векторов. В этом случае надо последовательно прикладывать эти вектора друг к другу, выстраивая «цепочку» векторов. Например, сложение 4 векторов, показанных на рисунке, будет осуществляться следующим образом:
Этот способ сложения векторов именуют правилом многоугольника. Естественно, в силу переместительного закона вектора можно прикладывать друг к другу в разной последовательности, при этом результат будет получаться один и тот же.
Задание. Сложите, используя правило многоугольника, вектора, изображенные на рисунке. Выполните сложение двумя разными способами:
В первом случае последовательно сложим вектора a, b, c и d. Во втором случае изменим последовательность сложения. Например, сложим их в порядке d, b, c, a:
Видно, что каждый из двух способов дал один и тот же результат, что ещё раз подтверждает справедливость переместительного закона сложения векторов.
Вычитание векторов
Напомним, что в алгебре операция вычитания вводится как операция обратная сложению. То есть если для трех чисел верно соотношение
то разностью чисел с и a как раз окажется b:
Аналогично вычитание понимается и в векторной алгебре. Пусть построены вектора а, b и c так, что
Этот пример показывает, как строить разность двух векторов. На рисунке вектора с и a отложены от одной точки, а вектор b, являющийся их разницей, проведен от конца вычитаемого вектора к концу уменьшаемого вектора.
В данном случае под уменьшаемым вектором понимается тот, который в разнице стоит перед знаком минус, а вычитаемый вектор – тот, который находится уже после этого знака. Например, в записи
Вектор а – уменьшаемый, а вектор b – вычитаемый.
Задание. Постройте в тетради разность векторов, изображенных на рисунке:
Решение. Заметим, что в условии не сказано, какой вектор из какого надо вычитать. Поэтому можно построить сразу два ответа:
Несложно заметить, две получившиеся разности представляют собой противоположно направленные векторы одной длины. Такие векторы называются противоположными.
Очевидно, что если сложить друг с другом два противоположных вектора, то получится нулевой вектор:
Противоположные вектора играют в векторной алгебре такую же роль, как и противоположные числа. С их помощью удобно выполнять вычитание векторов. Напомним, что для обычных чисел справедливо соотношение:
Поэтому операцию вычитания можно заменить операцией сложения, если вместо вычитаемого вектора взять вектор, противоположный ему. Рассмотрим этот способ на примере. Пусть из a надо вычесть b:
На первом шаге надо построить вектор, противоположный b:
Теперь надо просто сложить a и (– b):
В итоге нам удалось построить разность векторов а и b.
Умножение вектора на число
Предположим, что нам надо сложить два равных вектора. В результате мы получим новый вектор, который будет сонаправлен с исходным, но его длина будет вдвое больше. Логично считать, что получившийся вектор вдвое больше исходного, то есть он получился при умножении вектора на число 2:
Аналогично можно построить вектора, которые больше исходного не в 2, а в 3,4 и т. д. раз:
Итак, чтобы умножить вектор на положительное число k, надо построить сонаправленный с ним вектор, длина которого в k раз больше.А как умножать вектор на отрицательное число? Здесь нужно использовать противоположный вектор. Логично считать, что он получается при умножении (– 1) на вектор. Зная это, легко умножать вектор и на другие отрицательные числа:
Естественно, что если вектор умножается на ноль, то в результате получается нулевой вектор.
Задание. На рисунке показаны вектора а и b. Найдите вектора
Решение. Для построения снам надо сначала умножить исходные вектора на 4 и 2, а далее полученные результаты сложить:
Для нахождения вектора d надо построить вектор, противоположный вектору 2b, и уже его складывать с 4a:
Наконец, для нахождения вектора е необходимо построить противоположный вектор уже для 4а:
Некоторые правила обычной алгебры, касающиеся операции умножения, справедливы и для векторов. Первый такое правило – это сочетательный закон:
Видно, что мы можем либо сразу умножить вектор а на число 12, либо сначала его умножить на 4, а потом на 3. Результат операции при этом не изменится.
Также в отношении операции умножения векторов на число справедлив распределительный закона, которые позволяют раскрывать скобки:
Например, пусть нам надо сложить вектора 2а и 3а. Распределительный закон говорит, что мы можем поступить двумя способами. В первом случае мы просто строим вектора 2а и 3а и складываем их. Во втором случае мы складываем только числа 2 и 3 (получаем 5), и далее уже умножаем вектор а на число 5:
Есть ещё один распределительный закон, в котором в скобках находится уже сумма векторов, а не чисел:
Этот закон можно применить в случае, когда нам необходимо, например, сложить вектора 4а и 4b. Конечно, можно просто построить их и сложить, однако закон говорит, что мы можем сначала сложить aи b, и уже потом эту сумму умножить на 4:
Сформулированные нами законы сложения и умножения векторов позволяют выполнять действия с векторами так же, как с числами. В том числе можно упрощать выражения, содержащие векторные величины. Например, пусть известны вектора а, b и с, и надо найти вектор
Видно, что выражение значительно упростилось.
Решение задач с помощью векторов
Вектора активно используются в физике при решении многих задач, однако они также помогают доказывать геометрические теоремы. Рассмотрим несколько примеров, и начнем со вспомогательной задачи.
Задание. Известно, что С – это середина отрезка АВ. Докажите, что для любой точки О выполняется равенство:
Используя правило треугольника, вектор ОС можно представить в виде двух различных сумм:
Проанализируем выражение в скобках. Вектора АС и ВС коллинеарны, ведь они лежат на одной прямой АВ. При этом они противоположно направлены. Длина у них одинакова, ведь С – середина АВ. Тогда по определению АС и ВС – противоположные вектора, и их сумма равна нулю:
Задание. Докажите, что если в трапеции провести прямую, проходящую через середины ее оснований, то она также пройдет через точку, в которой пересекаются продолжения боковых сторон трапеции.
Решение. Построим трапецию, обозначим ее вершины и середины оснований:
Здесь ABCD – трапеция, основаниями которой являются отрезки ВС и AD. M и N – их середины. Прямые АВ и CD пересекаются в точке O. Необходимо доказать, что прямая MN также проходит через О.
Заметим, что ∆ОВС и ∆ОАD подобны. Действительно, у них есть общий ∠ВОС, а ∠ОВС и ∠ОАD одинаковы как односторонние углы при секущей АВ, поэтому треугольники подобны по 1-ому признаку. Обозначим коэффициент подобия буквой k, тогда можно записать, что
Так как отрезки ОА и АВ лежат на одной прямой, то вектора ОА и АВ коллинеарны и притом сонаправлены, поэтому в (1) отрезки можно заменить векторами:
(это соотношение мы доказали в предыдущей, вспомогательной задаче).
Аналогичную формулу можно составить и для второго основания и его середины N:
Полученное нами равенство означает, что вектора ON и ОМ коллинеарны, а значит, лежат на одной прямой (эти вектора не могут лежать на параллельных прямых, так как имеют общую точку О). Тогда получается, что О, M и N лежат на одной прямой, ч. т. д.
Линейная алгебра для разработчиков игр
Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
Зачем нам линейная алгебра?
Одним из направлений в линейной алгебре является изучение векторов. Если в вашей игре применяется позиционирование экранных кнопок, работа с камерой и её направлением, скоростями объектов, то вам придётся иметь дело с векторами. Чем лучше вы понимаете линейную алгебру, тем больший контроль вы получаете над поведением векторов и, следовательно, над вашей игрой.
Что такое вектор?
Важно отслеживать единицы измерения. Допустим у нас есть вектор V (3,5,2). Это мало что говорит нам. Три чего, пять чего? В нашей игре Overgrowth расстояния указываются в метрах, а скорости в метрах в секунду. Первое число в этом векторе — это направление на восток, второе — направление вверх, третье — направление на север. Отрицательные числа обозначают противоположные направления, на запад, вниз и на юг. Местоположение, определяемое вектором V (3,5,2), находится в трёх метрах к востоку, в пяти метрах вверху и в двух метрах к северу, как показано на картинке ниже.
Итак, мы изучили основы работы с векторами. Теперь узнаем как вектора использовать.
Сложение векторов
Чтобы сложить вектора, нам надо просто сложить каждую их составляющую друг с другом. Например:
Зачем нам нужно складывать вектора? Наиболее часто сложение векторов в играх применяется для физического интегрирования. Любой физический объект будет иметь вектора для местоположения, скорости и ускорения. Для каждого кадра (обычно это одна шестидесятая часть секунды), мы должны интегрировать два вектора: добавить скорость к местоположению и ускорение к скорости.
Давайте рассмотрим первые кадры поподробнее, чтобы понять как всё происходит.
Обычно игрок контролирует ускорение игрового персонажа с помощью клавиатуры или геймпада, а игра, в свою очередь, рассчитывает новые значения для скоростей и местоположения, используя физическое сложение (через сложение векторов). Это та-же задача, которая решается в интегральном исчислении, просто мы его сильно упрощаем для нашей игры. Я заметил, что мне намного проще внимательно слушать лекции по интегральному исчислению, думая о практическом его применении, которое мы только что описали.
Вычитание векторов
Вычитание рассчитывается по тому-же принципу что и сложение — вычитаем соответствующие компоненты векторов. Вычитание векторов удобно для получения вектора, который показывает из одного местоположения на другое. Например, пусть игрок находится по координатам (1, 2) с лазерным ружьём, а вражеский робот находится по координатам (4, 3). Чтобы определить вектор движения лазерного луча, который поразит робота, нам надо вычесть местоположение игрока из местоположения робота. Получаем:
(4, 3) — (1, 2) = (4-1, 3-2) = (3, 1).
Умножение вектора на скаляр
Когда мы говорим о векторах, мы называем отдельные числа скалярами. Например (3, 4) — вектор, а 5 — это скаляр. В играх, часто бывает нужно умножить вектор на число (скаляр). Например, моделируя простое сопротивление воздуха путём умножения скорости игрока на 0.9 в каждом кадре. Чтобы сделать это, нам надо умножить каждый компонент вектора на скаляр. Если скорость игрока (10, 20), то новая скорость будет:
0.9*(10, 20) = (0.9 * 10, 0.9 * 20) = (9, 18).
Длина вектора
Если у нас есть корабль с вектором скорости V (4, 3), нам также понадобится узнать как быстро он двигается, чтобы посчитать потребность в экранном пространстве или сколько потребуется топлива. Чтобы сделать это, нам понадобится найти длину (модуль) вектора V. Длина вектора обозначается вертикальными линиями, в нашем случае длина вектора V будет обозначаться как |V|.
Мы можем представить V как прямоугольный треугольник со сторонами 4 и 3 и, применяя теорему Пифагора, получить гипотенузу из выражения: x 2 + y 2 = h 2
В нашем случае — длину вектора H с компонентами (x, y) мы получаем из квадратного корня: sqrt(x 2 + y 2 ).
Итак, скорость нашего корабля равна:
|V| = sqrt(4 2 + 3 2 ) = sqrt(25) = 5
Этот подход используется и для трёхмерных векторов. Длина вектора с компонентами (x, y, z) рассчитывается как sqrt(x 2 + y 2 + z 2 )
Расстояние
Расстояние = |P — E| = |(3, 3) — (1, 2)| = |(2, 1)| = sqrt(2 2 +1 2 ) = sqrt(5) = 2.23
Нормализация
Вектор с длиной равной единице называется «нормализованным». Как сделать вектор нормализованным? Довольно просто. Мы делим каждый компонент вектора на его длину. Если, к примеру, мы хотим нормализовать вектор V с компонентами (3, 4), мы просто делим каждый компонент на его длину, то есть на 5, и получаем (3/5, 4/5). Теперь, с помощью теоремы Пифагора, мы убедимся в том, что его длина равна единице:
(3/5) 2 + (4/5) 2 = 9/25 + 16/25 = 25/25 = 1
Скалярное произведение векторов
Что такое скалярное произведение (записывается как •)? Чтобы рассчитать скалярное произведение двух векторов, мы должны умножить их компоненты, а затем сложить полученные результаты вместе
(a1, a2) • (b1, b2) = a1b1 + a2b2
Например: (3, 2) • (1, 4) = 3*1 + 2*4 = 11. На первый взгляд это кажется бесполезным, но посмотрим внимательнее на это:
Здесь мы можем увидеть, что если вектора указывают в одном направлении, то их скалярное произведение больше нуля. Когда они перпендикулярны друг другу, то скалярное произведение равно нулю. И когда они указывают в противоположных направлениях, их скалярное произведение меньше нуля.
В основном, с помощью скалярного произведения векторов можно рассчитать, сколько их указывает в одном направлении. И хоть это лишь малая часть возможностей скалярного произведения, но уже очень для нас полезная.
Допустим у нас есть стражник, расположенный в G(1, 3) смотрящий в направлении D(1,1), с углом обзора 180 градусов. Главный герой игры подсматривает за ним с позиции H(3, 2). Как определить, находится-ли главный герой в поле зрения стражника или нет? Сделаем это путём скалярного произведения векторов D и V (вектора, направленного от стражника к главному герою). Мы получим следующее:
Так как единица больше нуля, то главный герой находится в поле зрения стражника.
Мы уже знаем, что скалярное произведение имеет отношение к определению направления векторов. А каково его более точное определение? Математическое выражение скалярного произведения векторов выглядит так:
Где Θ (произносится как «theta») — угол между векторами A и B.
Это позволяет нам найти Θ (угол) с помощью выражения:
Как я говорил ранее, нормализация векторов упрощает нашу жизнь. И если A и B нормализованы, то выражение упрощается следующим образом:
Давайте опять рассмотрим сценарий со стражником. Пусть теперь угол обзора стражника будет равен 120 градусам. Получим нормализованные вектора для направления взгляда стражника (D’) и для направления от стражника к главному герою (V’). Затем определим угол между ними. Если угол более 60 градусов (половина от угла обзора), то главный герой находится вне поля зрения стражника.
Θ = acos(D’V’) = acos(0.71*0.89 + 0.71*(-0.45)) = acos(0.31) = 72
Угол между центром поля зрения стражника и местоположением главного героя составляет 72 градуса, следовательно стражник его не видит.
Понимаю, что это выглядит довольно сложно, но это потому, что мы всё делаем вручную. В программе это всё довольно просто. Ниже показано как я сделал это в нашей игре Overgrowth с помощью написанных мной С++ библиотек для работы с векторами:
Векторное произведение
Допустим у нас есть корабль с пушками, которые стреляют в правую и в левую стороны по курсу. Допустим, что лодка расположена вдоль вектора направления (2, 1). В каких направлениях теперь стреляют пушки?
А что если мы хотим рассчитать это всё для трехмерной графики? Рассмотрим пример с кораблём.
У нас есть вектор мачты M, направленной прямо вверх (0, 1, 0) и направление ветра: север-северо-восток W (1, 0, 2). И мы хотим вычислить вектор направления паруса S, чтобы наилучшим образом «поймать ветер».
Для решения этой задачи мы используем векторное произведение: S = M x W.
Подставим теперь нужные нам значения:
Для расчётов вручную довольно сложно, но для графических и игровых приложений я рекомендую написать функцию, подобную той, что указана ниже и не вдаваться более в детали подобных расчётов.
Векторное произведение часто используется в играх, чтобы рассчитать нормали к поверхностям. Направления, в которых «смотрит» та или иная поверхность. Например, рассмотрим треугольник с векторами вершин A, B и С. Как мы найдем направление в котором «смотрит» треугольник, то есть направление перпендикулярное его плоскости? Это кажется сложным, но у нас есть инструмент для решения этой задачи.
Используем вычитание, для определения направления из A в С (C — A), пусть это будет «грань 1» (Edge 1) и направление из A в B (B — A), пусть это будет «грань 2» (Edge 2). А затем применим векторное произведение, чтобы найти вектор, перпендикулярный им обоим, то есть перпендикулярный плоскости треугольника, также называемый «нормалью к плоскости».
Вот так это выглядит в коде:
В играх основное выражение освещённости записывается как N • L, где N — это нормаль к освещаемой поверхности, а L — это нормализованный вектор направления света. В результате поверхность выглядит яркой, когда на неё прямо падает свет, и тёмной, когда этого не происходит.
Теперь перейдем к рассмотрению такого важного для разработчиков игр понятия, как «матрица преобразований» (transformation matrix).
Для начала изучим «строительные блоки» матрицы преобразований.
Базисный вектор
Допустим мы пишем игру Asteroids на очень старом «железе» и нам нужен простой двухмерный космический корабль, который может свободно вращаться в своей плоскости. Модель корабля выглядит так:
Как нам рисовать корабль, когда игрок поворачивает его на произвольный градус, скажем 49 градусов против часовой стрелки. Используя тригонометрию, мы можем написать функцию двухмерного поворота, которая принимает координаты точки и угол поворота, и возвращает координаты смещённой точки:
Применяя эту функцию ко всем трём точкам, мы получим следующую картину:
Операции с синусами и косинусами работают довольно медленно, но так как мы делаем расчёты лишь для трёх точек, это будет нормально работать даже на старом «железе» (прим. переводчика: в случаях, когда предполагается интенсивное использование тригонометрических функций, для ускорения вычислений, в памяти организуют таблицы значений для каждой функции и рассчитывают их во время запуска приложения. Затем при вычислении той или иной тригонометрической функции просто производится обращение к таблице).
Пусть теперь наш корабль выглядит вот так:
Теперь старый подход будет слишком медленным, так как надо будет поворачивать довольно большое количество точек. Одно из элегантных решений данной проблемы будет звучать так — «Что если вместо поворота каждой точки модели корабля, мы повернём координатную решётку нашей модели?»
Как это работает? Давайте посмотрим внимательнее, что собой представляют координаты.
Когда мы говорим о точке с координатами (3, 2), мы говорим, что её местоположение находится в трех шагах от точки отсчёта по координатной оси X, и двух шагах от точки отсчёта по координатной оси Y.
По-умолчанию координатные оси расположены так: вектор координатной оси X (1, 0), вектор координатной оси Y (0, 1). И мы получим расположение: 3(1, 0) + 2(0, 1). Но координатные оси не обязательно должны быть в таком положении. Если мы повернём координатные оси, в это-же время мы повернём все точки в координатной решётке.
Чтобы получить повернутые оси X и Y мы применим тригонометрические функции, о которых говорили выше. Если мы поворачиваем на 49 градусов, то новая координатная ось X будет получена путём поворота вектора (0, 1) на 49 градусов, а новая координатная ось Y будет получена путём поворота вектора (0, 1) на 49 градусов. Итак вектор новой оси X у нас будет равен (0.66, 0.75), а вектор новой оси Y будет (-0.75, 0.66). Сделаем это вручную для нашей простой модели из трёх точек, чтобы убедиться, что это работает так, как нужно:
Координаты верхней точки (0, 2), что означает, что её новое местоположение находится в 0 на новой (повёрнутой) оси X и 2 на новой оси Y:
0*(0.66,0.75) + 2*(-0.75, 0.66) = (-1.5, 1.3)
Мы показали, как координаты корабля отображаются в другой координатной сетке с повернутыми осями (или «базисными векторами»). Это удобно в нашем случае, так как избавляет нас от необходимости применять тригонометрические преобразования к каждой из точек модели корабля.
Каждый раз, когда мы изменяем базисные вектора (1, 0) и (0, 1) на (a, b) и (c, d), то новая координата точки (x, y) может быть найдена с помощью выражения:
Обычно базисные вектора равны (1, 0) и (0, 1) и мы просто получаем x(1, 0) + y(0, 1) = (x, y), и нет необходимости заботиться об этом дальше. Однако, важно помнить, что мы можем использовать и другие базисные вектора, когда нам это нужно.
Матрицы
Матрицы похожи на двухмерные вектора. Например, типичная 2×2 матрица, может выглядеть так:
Когда вы умножаете матрицу на вектор, вы суммируете скалярное произведение каждой строки с вектором, на который происходит умножение. Например, если мы умножаем вышеприведённую матрицу на вектор (x, y), то мы получаем:
Будучи записанным по-другому, это выражение выглядит так:
Выглядит знакомо, не так-ли? Это в точности такое-же выражение, которые мы использовали для смены базисных векторов. Это означает, что умножая 2×2 матрицу на двухмерный вектор, мы тем самым меняем базисные вектора. Например, если мы вставим стандартные базисные вектора в (1, 0) и (0, 1) в колонки матрицы, то мы получим:
Это единичная матрица, которая не даёт эффекта, который мы можем ожидать от нейтральных базисных векторов, которые мы указали. Если-же мы повернём базисные вектора на 49-градусов, то мы получим:
Эта матрица будет поворачивать двухмерный вектор на 49 градусов против часовой стрелки. Мы можем сделать код нашей игры Asteriods более элегантным, используя матрицы вроде этой. Например, функция поворота нашего корабля может выглядеть так:
Однако, наш код будет ещё более элегантным, если мы сможем также включить в эту матрицу перемещение корабля в пространстве. Тогда у нас будет единая структура данных, которая будет заключать в себе и применять информацию об ориентации объекта и его местоположении в пространстве.
К счастью есть способ добиться этого, хоть это и выглядит не очень элегантно. Если мы хотим переместиться с помощью вектора (e, f), мы лишь включаем его в нашу матрицу преобразования:
И добавляем дополнительную единицу в конец каждого вектора, определяющего местоположение объекта, например так:
Теперь, когда мы перемножаем их, мы получаем:
(a, c, e) • (x, y, 1) + (b, d, f) • (x, y, 1) + (0, 0, 1) • (x, y, 1)
Что, в свою очередь, может быть записано как:
x(a, b) + y(c, d) + (e, f)
Теперь у нас есть полный механизм трансформации, заключённый в одной матрице. Это важно, если не принимать в расчёт элегантность кода, так как с ней мы теперь можем использовать все стандартные манипуляции с матрицами. Например перемножить матрицы, чтобы добавить нужный эффект, или мы можем инвертировать матрицу, чтобы получить прямо противоположное положение объекта.
Трехмерные матрицы
Матрицы в трехмерном пространстве работают так-же как и в двухмерном. Я приводил примеры с двухмерными векторами и матрицами, так как их просто отобразить с помощью дисплея, показывающего двухмерную картинку. Нам просто надо определить три колонки для базисных векторов, вместо двух. Если базисные вектора это (a,b,c), (d,e,f) and (g,h,i) то наша матрица будет выглядеть так:
Если нам нужно перемещение (j,k,l), то мы добавляем дополнительную колонку и строку, как говорили раньше:
И добавляем единицу [1] в вектор, как здесь:
Вращение в двухмерном пространстве
Так как в нашем случае у нас только одна ось вращения (расположенная на дисплее), единственное, что нам надо знать, это угол. Я говорил об этом ранее, упоминая, что мы можем применять тригонометрические функции для реализации функции двухмерного вращения наподобие этой:
Более элегантно это можно выразить в матричной форме. Чтобы определить матрицу, мы можем применить эту функцию к осям (1, 0) и (0, 1) для угла Θ, а затем включить полученные оси в колонки нашей матрицы. Итак, начнём с координатной оси X (1, 0). Если мы применим к ней нашу функцию, мы получим:
(1*cos(Θ) — 0*sin(Θ), 1*sin(Θ) + 0*cos(Θ)) = (cos(Θ), sin(Θ))
Затем, мы включаем координатную ось Y (0, 1). Получим:
(0*cos(Θ) — 1*sin(Θ), 0*sin(Θ) + 1*cos(Θ)) = (-sin(Θ), cos(Θ))
Включаем полученные координатные оси в матрицу, и получаем двухмерную матрицу вращения:
Применим эту матрицу к Сюзанне, мартышке из графического пакета Blender. Угол поворота Θ равен 45 градусов по часовой стрелке.
Как видите — это работает. Но что если нам надо осуществить вращение вокруг точки, отличной от (0, 0)?
Например, мы хотим вращать голову мартышки вокруг точки, расположенной в её ухе:
Это важный шаблон, который мы будем применять позднее — применение вращения для двух противоположных трансформаций позволяет нам вращать объект в другом «пространстве». Что очень удобно и полезно.
Теперь рассмотрим трёхмерное вращение.
Трёхмерное вращение
Вращение вокруг оси Z работает по тому-же принципу, что и вращение в двухмерном пространстве. Нам лишь нужно изменить нашу старую матрицу, добавив к ней дополнительную колонку и строку:
Применим эту матрицу к трехмерной версии Сюзанны, мартышки из пакета Blender. Угол поворота Θ пусть будет равен 45 градусов по часовой стрелке.
То-же самое. Вращение только вокруг оси Z ограничивает нас, как насчёт вращения вокруг произвольной оси?
Вращение, определяемое осью и углом (Axis-angle rotation)
Представление вращения, определяемого осью и углом, также известно как вращение в экспоненциальных координатах, параметризованное вращением двух величин. Вектора, определяющего вращение направляющей оси (прямая линия) и угла, описывающего величину поворота вокруг этой оси. Вращение осуществляется согласно правилу правой руки.
Итак, вращение задаётся двумя параметрами (axis, angle), где axis — вектор оси вращения, а angle — угол вращения. Этот приём довольно прост и являет собой отправную точку для множества других операций вращения, с которыми я работаю. Как практически применить вращение, определяемое осью и углом?
Допустим мы имеем дело с осью вращения, показанной на рисунке ниже:
Мы знаем как вращать объект вокруг оси Z, и мы знаем как вращать объект в других пространствах. Итак, нам лишь надо создать пространство, где наша ось вращения будет являться осью Z. И если эта ось будет осью Z, то что будет являться осями X и Y? Займемся вычислениями сейчас.
Чтобы создать новые оси X и Y нам нужно лишь выбрать два вектора, которые перпендикулярны новой оси Z и перпендикулярны друг другу. Мы уже говорили ранее о векторном умножении, которое берёт два вектора и даёт в итоге перпендикулярный им вектор.
У нас есть один вектор сейчас, это ось вращения, назовём его A. Возьмём теперь случайный другой вектор B, который находится не в том-же направлении, что и вектор A. Пусть это будет (0, 0, 1) к примеру.
Теперь мы имеем ось вращения A и случайный вектор B, мы можем получить нормаль C, через векторное произведение A и B. С перпендикулярен векторам A и B. Теперь мы делаем вектор B перпендикулярным векторам A и C через их векторное произведение. И всё, у нас есть все нужные нам оси координат.
На словах это звучит сложно, но довольно просто выглядит в коде или будучи показанным в картинках.
Ниже показано, как это выглядит в коде:
Тут показана иллюстрация для каждого шага:
Теперь, имея информацию о новых координатных осях, мы можем составить матрицу M, включив каждую ось как колонку в эту матрицу. Нам надо убедиться, что вектор A является третьей колонкой, чтобы он был нашей новой осью координат Z.
Теперь это похоже на то, что мы делали для поворота в двухмерном пространстве. Мы можем применить инвертированную матрицу M, чтобы переместиться в новую систему координат, затем произвести вращение, согласно матрице R, чтобы повернуть объект вокруг оси Z, затем применить матрицу M, чтобы вернуться в исходное координатное пространство.
Вращение, определяемое осью и углом, возможно, самый интуитивно понятный способ. Применяя его, очень легко инвертировать поворот, поменяв знак у угла, и легко интерполировать, путём интерполяции угла. Однако тут есть серьёзное ограничение, и заключается оно в том, что такое вращение не является суммирующим. То есть вы не можете комбинировать два вращения, определяемых осью и углом в третье.
Вращение, определяемое осью и углом — хороший способ для начала, но оно должно быть преобразовано во что-то другое, чтобы использоваться в более сложных случаях.
Эйлеровские углы
Эйлеровские углы представляют собой другой способ вращения, заключающийся в трёх вложенных вращениях относительно осей X, Y и Z. Вы, возможно, сталкивались с их применением в играх, где камера показывает действие от первого лица, либо от третьего лица.
Допустим вы играете в шутер от первого лица и вы повернулись на 30 градусов влево, а затем посмотрели на 40 градусов вверх. В конце-концов в вас стреляют, попадают, и, в результате удара, камера поворачивается вокруг своей оси на 45 градусов. Ниже показано вращение с помощью углов Эйлера (30, 40, 45).
Углы Эйлера — удобное и простое в управлении средство. Но у этого способа есть два недостатка.
Первый, это вероятность возникновения ситуации под названием «блокировка оси» или «шарнирный замок» (gimbal lock). Представьте, что вы играете в шутер от первого лица, где вы можете посмотреть влево, вправо, вверх и вниз или повернуть камеру вокруг зрительной оси. Теперь представьте, что вы смотрите прямо вверх. В этой ситуации попытка взглянуть налево или направо будет аналогична попытке вращения камеры. Всё что мы можем вы этом случае, это вращать камеру вокруг своей оси, либо посмотреть вниз. Как вы можете представить, это ограничение делает непрактичным применение углов Эйлера в лётных симуляторах.
Второе — интерполяция между двумя эйлеровскими углами вращения не даёт кратчайшего пути между ними.
Например, у вас две интерполяции между двумя одинаковыми вращениями. Первая использует интерполяцию эйлеровского угла, вторая использует сферическую линейную интерполяцию (spherical linear interpolation (SLERP)), чтобы найти кратчайший путь.
Итак, что-же больше подойдет для интерполяции вращений? Может быть матрицы?
Вращение с помощью матриц
Как мы уже говорили ранее, матрицы вращения хранят в себе информацию о трёх осях. Это означает, что интерполяция между двумя матрицами лишь линейно интерполирует каждую ось. В результате это даёт нам эффективный путь, то так-же привносит новые проблемы. Например, тут показаны два вращения и одно интерполированное полу-вращение:
Как вы можете заметить, интерполированное вращение значительно меньше, чем любое из исходных вращений, и две оси более не перпендикулярны друг другу. Это логично, если вдуматься — середина отрезка, соединяющего любые две точки на сфере будет расположена ближе к центру сферы.
Это в свою очередь порождает известный «эффект фантика» (candy wrapper effect), при применении скелетной анимации. Ниже показана демонстрация этого эффекта на примере кролика из нашей игры Overgrowth (прим. переводчика: обратите внимание на середину туловища кролика).
Вращение, основанное на матричных операциях, очень полезно, так как они могут аккумулировать вращения без всяких проблем, вроде блокировки оси (gimbal lock), и может очень эффективно применяться к точкам сцены. Вот почему поддержка вращения на матрицах встроена в графические карты. Для любого типа трёхмерной графики матричный формат вращения — это всегда итоговый применяемый способ.
Однако, как мы уже знаем, матрицы не очень хорошо интерполируются, и они не столь интуитивно понятны.
Итак, остался только один главный формат вращения. Последний, но тем не менее, важный.
Кватернионы
Что-же такое кватернионы? Если очень кратко, то это альтернативный вариант вращения, основанный на оси и угле (axis-angle rotation), который существует в пространстве.
Подобно матрицам они могут аккумулировать вращения, то есть вы можете составлять из них цепочку вращений, без опаски получить блокировку оси (gimbal lock). И в то-же время, в отличие от матриц, они могут хорошо интерполироваться из одного положения в другое.
Являются-ли кватернионы лучшим решением, нежели остальные способы вращений (rotation formats)?
На сегодняшний день они комбинируют все сильные стороны других способов вращений. Но у них есть два слабых места, рассмотрев которые, мы придём к выводу, что кватернионы лучше использовать для промежуточных вращений. Итак, каковы недостатки кватернионов.
Во-первых кватернионы непросто отобразить на трёхмерном пространстве. И мы вынуждены всегда реализовывать вращение более простым способом, а затем конвертировать его. Во-вторых, кватернионы не могут эффективно вращать точки, и мы вынуждены конвертировать их в матрицы, чтобы повернуть значительное количество точек.
Это означает, что вы скорее всего не начнете или не закончите серию вращений с помощью кватернионов. Но с их помощью можно реализовать промежуточные вращения более эффективно, нежели при применении любого другого подхода.
«Внутренняя кухня» механизма кватернионов не очень понятна и не интересна мне. И, возможно, не будет интересна и вам, если только вы не математик. И я советую вам найти библиотеки, которые работают с кватернионами, чтобы облегчить вам решение ваших задач с их помощью.
Математические библиотеки «Bullet» или «Blender» будут хорошим вариантом для начала.
- Как скинуть геопозицию
- Как складывать джинсы компактно