Определение угла по координатам точек.
Определение угла по координатам точек.
Итак, начать стоит с того, что Вы поставили некорректное условие, так как угол –
геометрическая фигура, образованная двумя лучами (сторонами угла), выходящими из одной точки (которая называется вершиной угла).
часть прямой, состоящая из данной точки и всех точек, лежащих по одну сторону от неё. Любая точка на прямой разделяет прямую на два луча.
В свою же очередь одна единственная прямая проходит через 2 точки => для построения угла требуется части 2-х пересекающихся прямых (с одной общей точкой) => 2 * 2 – 1 = 3 точки
Таким образом мы получаем очевидный для всех факт: не может быть между двумя точками какого-либо угла
Немного теории
Отойдем ненадолго от разъяснений геометрии за N класс средней школы и все таки попытаемся догадаться, что же Вам нужно
Как я понимаю, Вы моделируете движение машины в плоскости xOy . Так как машина движется, она имеет некоторый вектор, характеризующий ее перемещение.
Предположу, что машина выехала из точки (0; 0) => если ее текущие координаты равны (x; y), то вектор перемещения равен < x - 0; y - 0; >=
Однако так как Вам требуется найти угол для поворота машины, Вам бы следовало использовать вектор ее скорости, но Вы нас обделили информацией о нем, так что предположу, что он сонаправлен с вектором перемещения
Итак. На данном шаге у нас есть вектор и точка, итого: 3 точки. Для расчета угла более чем достаточно
Далее находим направляющий вектор из начала координат в необходимую точку и находим наименьший угол между двумя имеющимися векторами ( a и b ) по формуле:
Пример
Попробуем на примере:
Пусть машина располагается в точке (1; 2.5), а пункт назначения – в точке (3; 3):
Вот мы и получили заветный угол, который примерно равен 23 градусам
На сием курс геометрии окончен, переходим к программной реализации
Реализация
Набросаем такую функцию:
Судя по значениям в Вашем примере, которые явно больше единицы, Вы используете не радианную, а градусную меру, а посему значение, которое вернет Вам функция, необходимо будет преобразовать по формуле:
Пусть машина располагается в точке (-3; -3), а пункт назначения – в точке (3; 3):
180 градусов, что, очевидно, является чистейшей правдой!
Итоги
Старайтесь не забывать, что программирование состоит не только из набора текста, но и из применения знаний некой предметной области, с которой Вы соприкасаетесь в рамках проекта.
Чего-то не знаете? Читайте и узнавайте по теме как можно больше!
И да, подчеркну, что представленный выше метод будет работать только если Ваша машинка прямолинейно удаляется от начала координат (т.е. векторы перемещения и скорости сонаправлены), однако стоит машине развернуться и поехать в сторону точки (0; 0), как все сломается!
Чтобы решить проблему, Вам необходимо знать, в какую сторону движется автомобиль. Я не знаю деталей Вашей реализации, так что могу предложить кэшировать предыдущую точку, в которой был автомобиль, после чего уже передвигать его на новую. Тем самым Вы спокойно в любой момент времени найдете вектор скорости машины и примените его в расписанном выше алгоритме
Определение угла по координатам точек.
Нахождение координат и длин вектора.
Вычисление угла между векторами.
Составление уравнение плоскости по трем точкам.
Решение задач с доказательством.
Для того, чтобы успешно решать задачи методом координат, полезно помнить:
Чтобы задать вектор, проходящий черерз 2 точки, нужно из координат второй точки вычесть координаты первой точки.
Чтобы найти длину вектора, нужно извлечь корень квадратный из суммы квадратов его координат.
Задача. Найти координаты и длины векторов AB, BC, AC, если точки имееют координаты А = (5; 8; 3), B = (1; 0; −3), C = (−2; 5; −1).
AB = (1−5; 0-8; −3−3) = (−4; −8; −6)
AC = (−2−5; 5−8; −1−3) = (−7; −3; −4)
BC = (1−(−2); 0−5; −1−3) = (3; −5; −4)
Для нахождения угла между двумя векторами a = (x1; y1; z1) и b = (x2; y2; z2):
Задача. Найдите площадь треугольника, ограниченную точками A = (−4; 4; 4), B = (3; 1; 0), C = (−1; 0; 6).
- Находим координаты векторов.
- Вычисляем косинус угла между векторами.
- Через основное тригометрическое тождество получаем синус.
- Подставляем в формулу площади.
AB = (3−(−4); 1−4; 0−4) = (7; −3; −4)
AC = (−1−(−4); 0−4; 6−4) = (3; −4; 2)
Задача. Задайте уравнение плоскости, проходящей через точки A = ( − 4; 4; 4), B = (3; 1; 0), C = ( − 1; 0; 6).
- Находим координаты векторов.
- Задаем матрицу плоскости.
- Вычисляем ее определитель, это и есть уравнение плоскости.
AB = (3−(−4); 1−4; 0−4) = (7; −3; −4)
Первая строчка заполняется переменными x, y, z, и из них вычитаются координаты любой точки плоскости. В данном случае вычитается точка С = ( − 1; 0; 6). Тогда получится такая строка: (x−(−1); y − 0; z−6).
Вторая строчка – координаты первого вектора.
Третья строчка – координаты второго вектора (нет разницы какой из векторов задавать во второй строчке, а какой в третьей).
Четвертая заполняется аналогично первой.
Пятая – аналогично второй.
Теперь перемножаем все значения на одном синем отрезке и складываем с другими значениями на других отрезках:
Аналогично делаем с зелеными отрезками:
Осталось из значений синих отрезков вычесть значения зеленых отрезков:
= −22х −26y − 19z + 92
−22х −26y −19z + 92 – искомое уравнение плоскости, проходящей через точки A = (−4; 4; 4), B = (3; 1; 0), C = (−1; 0; 6).
P.s. Если вам кажется, что это сложно, то огорчу вас. Одна из первых тем (самых простых), которые вы будите проходить на первом курсе любого университета – это матрицы, так что можно немного облегчить себе жизнь и разобраться заранее.
Задача. Найдите угол между плоскостью, проходящей через точки A = ( − 4; 4; 4), B = (3; 1; 0), C = ( − 1; 0; 6), и плоскостью, заданную уравнением
14x + 6y − 27z + 51 = 0.
- Задаем уравнение плоскости, проходящей через 3 точки ( нашли в предыдущей задаче).
- Находим косинус угла между плоскостями ( формула аналогична косинусу угла между прямыми).
Нахождение угла между векторами
Длина вектора, угол между векторами – эти понятия являются естественно-применимыми и интуитивно понятными при определении вектора как отрезка определенного направления. Ниже научимся определять угол между векторами в трехмерном пространстве, его косинус и рассмотрим теорию на примерах.
Для рассмотрения понятия угла между векторами обратимся к графической иллюстрации: зададим на плоскости или в трехмерном пространстве два вектора a → и b → , являющиеся ненулевыми. Зададим также произвольную точку O и отложим от нее векторы O A → = b → и O B → = b →
Углом между векторами a → и b → называется угол между лучами О А и О В .
Полученный угол будем обозначать следующим образом: a → , b → ^
Очевидно, что угол имеет возможность принимать значения от 0 до π или от 0 до 180 градусов.
a → , b → ^ = 0 , когда векторы являются сонаправленными и a → , b → ^ = π , когда векторы противоположнонаправлены.
Векторы называются перпендикулярными, если угол между ними равен 90 градусов или π 2 радиан.
Если хотя бы один из векторов является нулевым, то угол a → , b → ^ не определен.
Нахождение угла между векторами
Косинус угла между двумя векторами, а значит и собственно угол, обычно может быть определен или при помощи скалярного произведения векторов, или посредством теоремы косинусов для треугольника, построенного на основе двух данных векторов.
Согласно определению скалярное произведение есть a → , b → = a → · b → · cos a → , b → ^ .
Если заданные векторы a → и b → ненулевые, то можем разделить правую и левую части равенства на произведение длин этих векторов, получая, таким образом, формулу для нахождения косинуса угла между ненулевыми векторами:
cos a → , b → ^ = a → , b → a → · b →
Данная формула используется, когда в числе исходных данных есть длины векторов и их скалярное произведение.
Исходные данные: векторы a → и b → . Длины их равны 3 и 6 соответственно, а их скалярное произведение равно – 9 . Необходимо вычислить косинус угла между векторами и найти сам угол.
Решение
Исходных данных достаточно, чтобы применить полученную выше формулу, тогда cos a → , b → ^ = – 9 3 · 6 = – 1 2 ,
Теперь определим угол между векторами: a → , b → ^ = a r c cos ( – 1 2 ) = 3 π 4
Ответ: cos a → , b → ^ = – 1 2 , a → , b → ^ = 3 π 4
Чаще встречаются задачи, где векторы задаются координатами в прямоугольной системе координат. Для таких случаев необходимо вывести ту же формулу, но в координатной форме.
Длина вектора определяется как корень квадратный из суммы квадратов его координат, а скалярное произведение векторов равно сумме произведений соответствующих координат. Тогда формула для нахождения косинуса угла между векторами на плоскости a → = ( a x , a y ) , b → = ( b x , b y ) выглядит так:
cos a → , b → ^ = a x · b x + a y · b y a x 2 + a y 2 · b x 2 + b y 2
А формула для нахождения косинуса угла между векторами в трехмерном пространстве a → = ( a x , a y , a z ) , b → = ( b x , b y , b z ) будет иметь вид: cos a → , b → ^ = a x · b x + a y · b y + a z · b z a x 2 + a y 2 + a z 2 · b x 2 + b y 2 + b z 2
Исходные данные: векторы a → = ( 2 , 0 , – 1 ) , b → = ( 1 , 2 , 3 ) в прямоугольной системе координат. Необходимо определить угол между ними.
Решение
- Для решения задачи можем сразу применить формулу:
cos a → , b → ^ = 2 · 1 + 0 · 2 + ( – 1 ) · 3 2 2 + 0 2 + ( – 1 ) 2 · 1 2 + 2 2 + 3 2 = – 1 70 ⇒ a → , b → ^ = a r c cos ( – 1 70 ) = – a r c cos 1 70
- Также можно определить угол по формуле:
cos a → , b → ^ = ( a → , b → ) a → · b → ,
но предварительно рассчитать длины векторов и скалярное произведение по координатам: a → = 2 2 + 0 2 + ( – 1 ) 2 = 5 b → = 1 2 + 2 2 + 3 2 = 14 a → , b → ^ = 2 · 1 + 0 · 2 + ( – 1 ) · 3 = – 1 cos a → , b → ^ = a → , b → ^ a → · b → = – 1 5 · 14 = – 1 70 ⇒ a → , b → ^ = – a r c cos 1 70
Ответ: a → , b → ^ = – a r c cos 1 70
Также распространены задачи, когда заданы координаты трех точек в прямоугольной системе координат и необходимо определить какой-нибудь угол. И тогда, для того, чтобы определить угол между векторами с заданными координатами точек, необходимо вычислить координаты векторов в виде разности соответствующих точек начала и конца вектора.
Исходные данные: на плоскости в прямоугольной системе координат заданы точки A ( 2 , – 1 ) , B ( 3 , 2 ) , C ( 7 , – 2 ) . Необходимо определить косинус угла между векторами A C → и B C → .
Решение
Найдем координаты векторов по координатам заданных точек A C → = ( 7 – 2 , – 2 – ( – 1 ) ) = ( 5 , – 1 ) B C → = ( 7 – 3 , – 2 – 2 ) = ( 4 , – 4 )
Теперь используем формулу для определения косинуса угла между векторами на плоскости в координатах: cos A C → , B C → ^ = ( A C → , B C → ) A C → · B C → = 5 · 4 + ( – 1 ) · ( – 4 ) 5 2 + ( – 1 ) 2 · 4 2 + ( – 4 ) 2 = 24 26 · 32 = 3 13
Ответ: cos A C → , B C → ^ = 3 13
Угол между векторами можно определить по теореме косинусов. Отложим от точки O векторы O A → = a → и O B → = b → , тогда, согласно теореме косинусов в треугольнике О А В , будет верным равенство:
A B 2 = O A 2 + O B 2 – 2 · O A · O B · cos ( ∠ A O B ) ,
b → – a → 2 = a → + b → – 2 · a → · b → · cos ( a → , b → ) ^
и отсюда выведем формулу косинуса угла:
cos ( a → , b → ) ^ = 1 2 · a → 2 + b → 2 – b → – a → 2 a → · b →
Для применения полученной формулы нам нужны длины векторов, которые несложно определяются по их координатам.
Хотя указанный способ имеет место быть, все же чаще применяют формулу:
Источники:
http://ru.stackoverflow.com/questions/869222/%D0%9D%D0%B0%D1%85%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D1%83%D0%B3%D0%BB%D0%B0-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-2-%D1%82%D0%BE%D1%87%D0%BA%D0%B0%D0%BC%D0%B8-%D0%B4%D0%BB%D1%8F-%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%8B-%D0%BA-%D1%86%D0%B5%D0%BB%D0%B8
http://ik-study.ru/ege_math/zagholovok_stat_i
http://zaochnik.com/spravochnik/matematika/vektory/nahozhdenie-ugla-mezhdu-vektorami-primery-i-reshen/