Векторы

1,137
5
3
Допустим, 2 вектора пересекаются. Найти 3 угла(это 3D).
 

CMTV

Основатель
Администратор
1,304
4
601
3 угла? Ты имеешь ввиду проекции углов?
 
1,137
5
3
Я не знаю, где можно нарисовать сию ситуацию, т.к. я не в силах объяснить
 
30
0
Это линейная алгебра. "Как найти угол между векторами" и всё тебе выдаст поисковик. Цитирую из первого попавшегося сайта: "Косинус угла между векторами равен скалярному произведению этих векторов, деленному на произведение их длин." Формула:
kak_najti_kosinus_ugla_mezhdu_vektorami2_3293.png

Если тебе нужны радианы, то можешь пользоваться этим кодом:
Код:
Math.acos(Vec3_1.dotProduct(Vec3_2) / (Vec3_1.lengthVector() * Vec3_2.lengthVector()))
 
1,137
5
3
Это хорошо, но косинус мне не нужен. Я так и не понял
 
398
4
7
У слова "вектор" есть разные значения. В геометрии вектор - это направленный отрезок. Но обычно (в математике, физике) под вектором понимают объект, характеризующийся направлением и числовым значением. По второму определению у вектора нет начала или конца, а значит и пересекаться нечему.
В информатике вектор это простой массив. Пересечением массивов (множеств) - можно считать совпадающие элементы в них (из теории множеств).

Может тебе нужно просто пересечение отрезков?
 
1,137
5
3
Вектор в геометрии - луч, ибо конца не имеет и имеет лишь начало. У меня то же, есть только координаты двух векторов и направление
 

CMTV

Основатель
Администратор
1,304
4
601
Asd73 все правильно сказал. Вектор - отрезок, на котором и задано одно из двух возможных направлений. Длина вектора - длина того самого отрезка.

Можешь сформулировать точно, какой угол тебе нужен? Потому что у 2 векторов всегда, по определению, может быть только 1 угол. Никак не три. Инфа 100%.
 
1,990
18
105
wilah написал(а):
Вектор в геометрии - луч
Я скоро кулак в кровь об стол разобью
Благо у меня нет привычки биться головой о твёрдые поверхности, ведь она тут более уместна
 
7,099
324
1,510
CMTV написал(а):
может быть только 1 угол. Никак не три. Инфа 100%.
2 угла: первый - любый, что между ними; второй - 180-первый
 
30
0
wilah, шевели извилинами. Прочти, лучше, статью про линейную алгебру и тригонометрические функции, нежели писать такой бред. Тебе писали, что вектор может означать чаще всего направление(такие лучше нормализовать) или местоположение. Между векторами может быть только один угол. hohserg, всё-таки ты находишь один угол, а потом, с помощью него, ты можешь найти и другие. Отнимай хоть 45 градусов, хоть 270, ты используешь только лишь этот же найденный угол и ищешь другие. Насчёт формулы и кода... Это простая тригонометрия, если ты найдёшь косинус угла, ты сможешь найти сам угол с помощью обратной функции (арккосинус). Я тебе даже предоставил код, выдающий радианы. А если ещё и немного подумать, то можно найти и градусы. Не убивай народ и лучше выучи нужный материал, в котором ты будешь работать.
 
1,137
5
3
Не так описал, наверно. У меня есть 2 точки и их направление в 3д. Если 1 точка попадает во вторую, то надо найти угля между отрезком и лучом.
 
30
0
wilah, до тебя когда-нибудь дойдёт?
5irGFqv.png

Сколько раз тебе писать одно и то же? Или ты людей хочешь потроллить?
 
332
4
wilah написал(а):
Это то понятно. Только точка b лежит выше точки a
Ты хотел сказать прямая b лежит выше примой a
 
1,137
5
3
Heitem написал(а):
Ты хотел сказать прямая b лежит выше примой a
Во-первых, не факт что выше или ниже, или наравне
Во-вторых, не примая, а прямая
В-третьих, есть лишь точка начала, можно провести луч. Прямой тут нету
В-четвёртых, это трёхмерное пространство, о чем в начале я и написал
 

CMTV

Основатель
Администратор
1,304
4
601
hohserg написал(а):
CMTV написал(а):
может быть только 1 угол. Никак не три. Инфа 100%.
2 угла: первый - любый, что между ними; второй - 180-первый

Да, но углом между векторами считается только тот, что от 0 и до пи. А значит 1. А дальше как писал Maxous.

wilah написал(а):
Это то понятно. Только точка b лежит выше точки a

Ну так формула не измениться все-равно!
 
30
0
БОЖЕ! Почему ты настолько тупой, прости меня на слове? Уж лучше загугли и не мучай людей. "Только точка b лежит выше точки a" -- прочти, что такое "вектор", и не пиши больше этот бред. "У меня есть 2 точки и их направление в 3д" -- у тебя есть либо направление, либо точка в пространстве. "Если 1 точка попадает во вторую, то надо найти угля между отрезком и лучом" -- как одна точка может попасть в другую? И да, где ты найдёшь луч? Хм? "не факт что выше или ниже, или наравне" -- это не играет роли, ты ищешь угол между ними. "есть лишь точка начала, можно провести луч. Прямой тут нету" -- щито? Википедия и интернет в помощь и наконец-таки прочти, что такое "вектор". ВЕКТОР -- тебе не луч! Он имеет ограниченную длину!
"В-четвёртых, это трёхмерное пространство, о чем в начале я и написал" -- Нету разницы, трёхмерное или двумерное, угол только один выходит! На фото ниже -- все нарисованные отрезки -- лучи. Нету разницы, как они расположены и где, важно только их числовое значение. На примере 4 и 5-го векторов можно понять, что хоть они расположены по разному, их длина равна. И угол между ними равен нулю. Между 3 и 4 вектором угол 45 градусов. Как я узнал? Формула. Если ты до сих пор считаешь, что я не прав, то попрошу модераторов закрыть тему и дать ему пенделя, чтобы пошёл учить и не задавал глупых вопросов. Лучше напиши, что ты хочешь добиться, ибо за тупость людей в жизни карают люто.
 
jUcLvHs.png

[merge_posts_bbcode]Добавлено: 08.05.2016 19:46:37[/merge_posts_bbcode]

Я просто поражён такими людьми. Я не знаю, троллит он нас, или же реально не может понять, что нужно загуглить простой запрос "как найти угол между векторами". Ему уже предоставили всё: и код, и объяснение, и даже иллюстрацию. Но он вообще не хочет ничего принимать. В топку таких людей!
 
1,137
5
3
Возможно, я не так объяснил. Углов должно получиться действительно 3, вот изображение углов Эйлера
300px-Euler.png

Альфа, бета и гамма - разные углы.
Хотя бы, между X и Y(я бы описал более лучше цель, если б мог показать рисунок)
 
30
0
Пхахахаха! Это вообще не то! Это углы Эйлера, но никак не углы с векторами. Представь, у нас есть вектор №1, который имеет координаты {0, 1, 0}, и №2 с координатами {1, 1, 0} Между ними сразу найдётся угол 45 градусов, я это нашёл по формуле. Ты считаешь угол относительно первого вектора, никак не относительно осей.
[merge_posts_bbcode]Добавлено: 08.05.2016 20:00:54[/merge_posts_bbcode]

Насчёт осей, то их можно легко воспроизвести. {0, 1, 0} -- вверх, {0, -1, 0} -- вниз, {1, 0, 0} -- вправо, {-1, 0, 0} -- влево, {0, 0, 1} -- вперед, {0, 0, -1} -- назад. А теперь укажи мне, пожалуйста, что ты хочешь сделать и не выкидывай подобного бреда.

[merge_posts_bbcode]Добавлено: 08.05.2016 20:06:31[/merge_posts_bbcode]

Вот на иллюстрации выше, я объясню как работает нахождение вектора: посмотри на отрезки 0x и 0N. Представь, что это два вектора. И вот ты видишь угол между ними (угол альфа). Вот и как работает формула.
 
Сверху