-
Уважаемые, никто не подскажет каким образом найти угол между двумя векторами, если известен их порядок ?
Например у нас есть вектор1 и вектор2, необходимо определить вектор между первым вектором и вторым если идти по часовой стрелке, т.е. угол может быть в пределах от 0 до 360.
С Уважением, infom.
-
Скалярное произведение.
-
транспортир?
-
atg разницы tg углов наклона векторов?
-
Спасибо уважаемые? Но видимо я не понятно изъяснился.
Есть вектор1 (X1, Y1) и вектор2 (X2, Y2) мне необходимо хотя бы понять алгоритм с помощью которого можно вычислить угол между первым и вторым по часовой стрелке.
-
> Есть вектор1 (X1, Y1) и вектор2 (X2, Y2)
да ты шо? а я думал это точки в 2d пространстве! еще корректнее вопрос поставь?
-
1. просто угол вычислить с помощью [1]
2. если x1*y2 < y1*x2 значит отнять [1] от 360
объяснения - в разделе "векторное произведение"
-
> [4] infom (17.09.08 10:18)
УГОЛ ВЫЧИСЛЯЕТСЯ С ПОМОЩЬЮ СКАЛЯРНОГО ПРОИЗВЕДЕНИЯ. ЛЮБОЙ. И ПО ЧАСОВОЙ И ПРОТИВ ЧАСОВОЙ.
-
-
> еще корректнее вопрос поставь?
Не знаю что вам не ясно, для примера есть код который я нагуглил, но он для DirectX написан и в 3D:
D3DXVec3Cross(Normal, Up, BaseForce);
if normal.z > 0 then
dir:= PI
else
dir:= 0;
BaseAngle:= dir + arccos(D3DXVec3Dot(Up, BaseForce)/(D3DXVec3Length(Up)*D3DXVec3Length(BaseForce)));
Осталось разобраться что это за функции:
D3DXVec3Cross и D3DXVec3Dot
-
> Не знаю что вам не ясно,
нам? с тобой все ясно.
-
> infom (17.09.08 10:08)
В школу, причем с первого класса.
-
> В школу, причем с первого класса.
Вектора вроде на 1-м курсе читают полностью, в школе там вроде только синусы и косинусы.
-
> Вектора вроде на 1-м курсе читают полностью, в школе там
> вроде только синусы и косинусы.
нееее вектора проходят класс 9-11 )
-
вект произв в шк нет
-
> вект произв в шк нет
ну да? странно, не ужель я путаю года обучения? ))))
-
Ээх, господа, вроде взрослые люди тут собрались, а за 5 лет так ничего и не изменилось на этом форуме, из всех ответов только 2 ответа по делу, остальные видимо нужны для удовлетворения собственных амбиций, поздравляю !
Большое спасибо TUser (всегда тебя уважал) и Dennis I. Komarov .
Остальным даже спасибо говорить не хочется.
-
у тебя вопрос как поставлен? мой ответ [2] вполне подходит под твой вопрос...
зы 5 лет назад тебе сколько было?
-
> остальные видимо нужны для удовлетворения собственных амбиций,
> поздравляю !
>
Учебник по ветторной алгебре не нужен значит, проще думать чужими мозгами? Если хочешь ответ без флуда, задавай его не в потрепаловке.
-
Т.е. за 5 лет кроме как гуглем ничем пользоваться не научился?!
Это пипец, товарищи, это пипец :((
-
> tesseract
Спасибо, видимо действительно зря я спросил в Потрепаться, ожидал я несколько другого.
>KSergey
Т.е. по вашему если я научился пользоваться чем то кроме гугла, то мне это должно было помочь в решении этой маленькой задачки ?
-
> в решении этой маленькой задачки ?
откуда такая оценка проблеммы?
-
автор, у тебя вопрос это почти название главы учебника,
то есть тебе надо справочные данные, а ты людей беспокоишь.
справочники надо было беспокоить, а ты ещё и неудовольствие высказываешь, зачем ты так
-
> Осталось разобраться что это за функции:
> D3DXVec3Cross и D3DXVec3Dot
Гугль знает что это за функции.
Посекрету скаж - это умножение. Векторное и скалярное.
-
Гм... вот уже минут пять пытаюсь вспомнить хоть что-нибудь про векторы и не могу... А закончил школу с похвальной грамотой "За особые успехи, достигнутые в изучении математики" :))
-
>shlst
Стойте, стойте, т.е. по вашему я беспокою людей, т.е. отвлекаю их от какого-то важного занятие своими "глупыми вопросами", но при этом они не находят времени ответить так же четко и лаконично как это сделал TUser, но находят время прочитать мне мораль и высказать свое неудовольствие ?
TUser единственно что хотелось заметить в вашем алгоритме считается против часовой стрелки.
Спасибо всем тема закрыта.
-
> если я научился пользоваться чем то кроме гугла, то мне
> это должно было помочь
в первую очередь, нужно было научиться думать
-
> [25] infom (17.09.08 11:07)
Конечно.
Потому если просто дать тебе ответ, то так ничему и не научишься. и в следующий раз опять придешь в неадекватном состоянии.
А так, до тебя может быть дойдет, что вопросы надо задавать грамотно, и у гугла интересоваться, хоть изредка.
> Спасибо всем тема закрыта.
А это уж не тебе решать.
-
> беспокою людей, т.е. отвлекаю их от какого-то важного занятие
> своими "глупыми вопросами", но при этом они не находят времени
> ответить так же четко и лаконично как это сделал TUser,
> но находят время прочитать мне мораль и высказать свое неудовольствие
> ?
Разумеется :))))
Это - ветка "Потрепаться"! Уррра!!
-
>@!!ex
Поддержу ваше самолюбие, в чем конкретно была неправильная постановка вопроса, где там были смысловые ошибки, неточности. Потрудитесь, если вам не сложно, вразумить неуча как составлять грамотные вопросы на этом форуме.
Вот не поверите, мне просто интересно, изменилось ли чтонибудь на этом форуме или до сих пор существует пресловутое деление на две категории пользователей.
-
> Спасибо всем тема закрыта.
Упущен нюанс связанный с ориентацией системы координат. Попробуйте поменять направление оси Y. При этом y-координаты векторов поменяются на противоположные, и результат вычисления угла будет другой. А ведь вектора-то те же остались... Короче, хорошо бы все же учебник почитать.
-
> в чем конкретно была неправильная постановка вопроса, где
> там были смысловые ошибки, неточности
дай понятие вектора...
-
> в чем конкретно была неправильная постановка вопроса
Если не указана ориентация системы координат, то вычислить угол невозможно.
-
> brother © (17.09.08 11:23) [31]
во, нашего полку прибыло! Ты тоже не помнишь про векторы! :)
-
> во, нашего полку прибыло! Ты тоже не помнишь про векторы!
> :)
хочу чтоб человек осознал глупость своего вопроса...
-
-
-
> KilkennyCat © (17.09.08 11:07) [24]
> Гм... вот уже минут пять пытаюсь вспомнить хоть что-нибудь
> про векторы и не могу... А закончил школу с похвальной грамотой
> "За особые успехи, достигнутые в изучении математики" :))
Бегом обратно в школу!
Я вот закончил школу с аттестатом 3.8, но на матмех ЛГУ поступал легко. И даже не один раз, и даже после 2 лет службы в Армии :). Просто у меня школа была отличная. Нас учили учиться, а не заставляли зазубривать материал. И Гугла тогда не было. Собствеено, тогда и интернет никто не видел, и PC ещё не было. А я и физику, и химию до сих пор достаточно хорошо знаю, а ведь прошло 25 лет.
Вывод: надо уметь учиться. Не тому вас в школе учат. :)
-
а я вот не врубаюсь, при чем здесь ориентация системы координат? бред.
-
В школе векторное умножение не дают...
На первом курсе универа нам дали.
А вот скалярное дают в школе.
-
> Alex Konshin © (17.09.08 11:33) [37]
Алекс, я младше всего на 7 лет ;) И тогда тоже не было интернета.
-
а, понял...
-
В сабже ничего не упомянуто про мерность пространства.
-
> [42] Jeer © (17.09.08 11:37)
В принципе можно принять двухмерность, так как на остальных понятие "часовая стрелка" не поределено
> [38] KilkennyCat © (17.09.08 11:34)
ОТ ориентации решение зависит. Оно разное.
-
> В сабже ничего не упомянуто про мерность пространства.
это к чему ты?
-
> Вот не поверите, мне просто интересно, изменилось ли чтонибудь
> на этом форуме или до сих пор существует пресловутое деление
> на две категории пользователей.
Поверьте, за 5 лет ничего не изменилось.
Здесь по прежнему не любят неграмотно заданных вопросов.
-
>palva
Т.е. нехватало ключевой фразы декартова система координат ?
>brother
Вы точно не путаете понятие "глупости вопроса" и "недостаточности исходных данных" ?
Хотя другим форумчанам эта нехватка не помешала поставить по умолчанию нужную систему координат и дать необходимый мне ответ. А вот вы о нее споткнулись и не смогли подняться.
-
> @!!ex © (17.09.08 11:38) [43]
Каким же это образом?
Если у вектора есть координаты, разве это не определяет однозначно, как и ориентацию, так и мерность?
-
> @!!ex © (17.09.08 11:38) [43]
>
> > [42] Jeer © (17.09.08 11:37)
>
> В принципе можно принять двухмерность, так как на остальных
> понятие "часовая стрелка" не поределено
Это не важно, т.к. векторы могли бы быть заданы в n-мерном пространстве, и рассматривается плоскость в которой они лежат.
-
> @!!ex © (17.09.08 11:35) [39]
> В школе векторное умножение не дают...На первом курсе универа
> нам дали.А вот скалярное дают в школе.
А зачем тут нужно векторное, если надо найти угол между векторами?
Это ж действительно чисто школьный вопрос.
-
еще какая недостаточность данных...
> Есть вектор1 (X1, Y1) и вектор2 (X2, Y2)
это ты так уточнил вопрос?
> Ээх, господа, вроде взрослые люди тут собрались, а за 5
> лет так ничего и не изменилось на этом форуме, из всех ответов
> только 2 ответа по делу, остальные видимо нужны для удовлетворения
> собственных амбиций, поздравляю !
началась философия...
> но при этом они не находят времени ответить так же четко
> и лаконично как это сделал TUser, но находят время прочитать
> мне мораль и высказать свое неудовольствие ?
философия с недовольствами...
> Поддержу ваше самолюбие, в чем конкретно была неправильная
> постановка вопроса, где там были смысловые ошибки, неточности.
> Потрудитесь, если вам не сложно, вразумить неуча как составлять
> грамотные вопросы на этом форуме
ты и тут не догадался о неточностях? уже чего-то требуешь от нас...
> Т.е. нехватало ключевой фразы декартова система координат
> ?
твое предположение.....
-
> Хотя другим форумчанам эта нехватка не помешала поставить
> по умолчанию нужную систему координа
Вы гораздо позже сообщили, что векторы заданы в плоской СК, а тем более, что они имеют общую точку и поэтому заданы концы векторов точками.
Вы видите сколько недочетов ?
А ведь это школьный курс ! Как же не сказать Вам: "бегом в школу" ?
-
а теперь по существу:
у вектора минимум 2 координаты, чуешь к чему я? ведь я в посте еще в [35] тебе об этом сказал...
-
надо быть не упертым, а обучаемым...
-
>Jeer
>Вы гораздо позже сообщили, что векторы заданы в плоской СК, а тем более, что они имеют общую точку и поэтому заданы концы векторов точками.
Про плоскую систему координат я сразу понял что не уточнил, но вот про вторую часть фразы я ничего не говорил.
-
> brother © (17.09.08 11:47) [52]
>
> а теперь по существу:
> у вектора минимум 2 координаты,
И даже у нулевого?
-
> но вот про вторую часть фразы я ничего не говорил.
блин, а я о чем? мы гадать должны как они заданы? выходят ли из одной точки или нет? пересекаются итд итп?
-
> И даже у нулевого?
в крайности не впадаем а?
http://ru.wikipedia.org/wiki/Нуль-вектормежду 2 нуль векторами не может быть угла те
С нулевым вектором не связывают ни какого направления в пространстве. Нулевой вектор принято считать сонаправленным любому вектору. Считается, что нулевой вектор одновременно параллелен и перпендикулярен любому вектору пространства.
Все координаты нулевого вектора в любой аффинной системе координат равны нулю.
-
> выходят ли из одной точки или нет? пересекаются итд итп?
Разве это изменит угол?
-
> Разве это изменит угол?
да
-
> brother © (17.09.08 11:53) [57]
причем здесь крайности? может, просто стоит более четко давать определения? ;)
-
> причем здесь крайности? может, просто стоит более четко
> давать определения? ;)
это уже не автору топика... но он однако ушел в партизаны не признав ничего(
-
> [47] KilkennyCat © (17.09.08 11:42)
Нет конечно.
просто пример? OpenGL.
Вектор может быть задан функциями
glVertex2f(1,1);
а может быть:
glVertex3f(1,1,0);
и это одно и тоже.
Причем я могу спокойно развернуть систему координат. А вектор будет задаваться все теми же функциями с теми же параметрами. Правда векторы будут уже совсем другие, так как изменилась система координат.
> [49] Alex Konshin © (17.09.08 11:44)
Ну такв коде автора в посте [9] присутствует векторное произведение.
-
> присутствует векторное произведение.
это ему гугль подсказал.... не до конца ;)
-
> @!!ex © (17.09.08 11:56) [62]
прекрасно. А теперрь вернемся к [4] и попробуем там менять систему координат.
-
> brother © (17.09.08 11:54) [59]
>
> > Разве это изменит угол?
>
> да
нет.
-
brother ©
Если ты действительно хочешь себе помочь.
И не очередным "списыванием" для "срочно надо", а на хоть какую-то перспективу, то крайне рекомендую для прочтения и последующего обдумывания.
http://www.lib.ru/SHUKSHIN/srezal.txt
-
> [64] KilkennyCat © (17.09.08 11:59)
блин.
вот представь две системы координат.
у одной ось Y идет вверх, у другой - вниз.
и все. алгоритмы будут отличаться. хотя бы на знак в это случае. в других случаях больше чем на знак.
-
> @!!ex © (17.09.08 10:23) [7]
> > [4] infom (17.09.08 10:18)
>
> УГОЛ ВЫЧИСЛЯЕТСЯ С ПОМОЩЬЮ СКАЛЯРНОГО ПРОИЗВЕДЕНИЯ. ЛЮБОЙ.
> И ПО ЧАСОВОЙ И ПРОТИВ ЧАСОВОЙ.
Ты уверен что скалярное произведение это УГОЛ?
-
> Если ты действительно хочешь себе помочь.
не понял, Вы о чем?
-
А вообще, познавательная ветка :)
Несмотря на то, что в уже в [4] все стало ясно, народ и повращал систему координат, и перевел ее из одного измерения в другое, и даже уточнили невклидову как афинную...
-
> @!!ex © (17.09.08 12:08) [67]
>
> > [64] KilkennyCat © (17.09.08 11:59)
>
> блин.
> вот представь две системы координат.
> у одной ось Y идет вверх, у другой - вниз.
и угол изменится?!
-
хотелось бы услышать ответ на пост [69]
-
> [68] Dennis I. Komarov © (17.09.08 12:08)
Я нигде этого не говорил. Говорил что с помощью скалярного произведения можно найти угол.
> [71] KilkennyCat © (17.09.08 12:14)
ЗНАК изменится.
-
> brother © (17.09.08 10:21) [5]
> > Есть вектор1 (X1, Y1) и вектор2 (X2, Y2)
>
> да ты шо? а я думал это точки в 2d пространстве! еще корректнее
> вопрос поставь?
Вектор не обязательно представлять вообще в пространстве, и вообще вектор указывает лишь направление ("и силу") и не важно из какой точки его провести...
-
ну все, ка попался школьный курс - так все начали меряться чем обычно и выискивать "кривости" у соседа в том же :))
-
вектор продится по 2 точкам! и точка!
> Вектор не обязательно представлять вообще в пространстве,
я про это не говорил...
-
> так все начали меряться чем обычно и выискивать "кривости"
> у соседа в том же :))
давайте еще чем помереемся?.... у меня один)))))))))))
-
> boriskb © (17.09.08 12:07) [66]
:)
> @!!ex © (17.09.08 12:17) [73]
>
> ЗНАК изменится.
Хорошо.
И, наверное, способ определения угла?
-
> [76] brother © (17.09.08 12:22)
> вектор продится по 2 точкам! и точка!
Неа. Вектор как раз одной точкой задается. а начинается в 0.0.0...
> [78] KilkennyCat © (17.09.08 12:24)
> Хорошо.
> И, наверное, способ определения угла?
Если нужен знак угла, то изменится.
-
> [79] @!!ex © (17.09.08 12:27)
> > [76] brother © (17.09.08 12:22)
> > вектор продится по 2 точкам! и точка!
>
> Неа. Вектор как раз одной точкой задается. а начинается
> в 0.0.0...
Если посмотреть на векторные операции, то это видно очень хорошо.
-
> @!!ex © (17.09.08 12:17) [73]
> > [71] KilkennyCat © (17.09.08 12:14)
>
> ЗНАК изменится.
Да ни в коем случае...
-
> Неа. Вектор как раз одной точкой задается. а начинается
> в 0.0.0...
Отлично.
-
это была комедия?)
-
> brother © (17.09.08 12:38) [83]
Вся наша жизнь - играаааааа!
(с) не помню.
-
> @!!ex © (17.09.08 12:29) [80]
Если уж быть дотошным и занудным. то вектор нигде не начинается и нигде не заканчивается. Это просто элемент векторного пространства.
А вот точки и т.п - это афинное пространство, и в нем можно ввести направленные отрезки, а потом проводя факторизацию уже выделить вектора, которые тоже нигде не начинаются.
> Да ни в коем случае...
Изменится. Это неинваринтная операция.
-
> @!!ex © (17.09.08 12:08) [67]
> > [64] KilkennyCat © (17.09.08 11:59)
>
> блин.
> вот представь две системы координат.
> у одной ось Y идет вверх, у другой - вниз.
> и все. алгоритмы будут отличаться. хотя бы на знак в это
> случае. в других случаях больше чем на знак.
В данном случае алгоритмы будут меняться вследствии иного определения понятия угла между ними. Возьми к примеру полярную систему координат...
-
> В данном случае алгоритмы будут меняться вследствии иного
> определения понятия угла между ними
завис! Расшифруй.
-
> алгоритмы будут меняться вследствии иного > определения
> понятия угла между ними
угол между алгоритмами?! йо!
-
> Изменится. Это неинваринтная операция.
Что есть угол между векторами в таком пространстве?
-
> Правильный$Вася (17.09.08 12:49) [88]
не придерайся, речь шла про вектора... :)
-
> Dennis I. Komarov © (17.09.08 12:52) [89]
В каком таком? Величина угла определяется после введения скалярного произведения, знак - после введения ориентации. При смене ориентации знак угла меняется. Что тебя интересует? Причем тут полярные координаты?
-
Автор поражен и удивлен тому, что происходит в этой ветке.
-
> Автор поражен и удивлен тому, что происходит в этой ветке.
забей уже... ветка живет своей жизнью...
-
Да, иди ваще отсюда, автор, мы сами разберемся....
:)
-
function Angle2D(v1, v2:PT3D):single;
const
conv : single = RTD;
asm
FLD DWORD PTR [EAX];
FMUL DWORD PTR [EDX];
FLD DWORD PTR [EAX+4];
FMUL DWORD PTR [EDX+4];
FADD;
FLD1;
FCOMP;
FNSTSW AX;
SAHF;
JB @exit;
FLD1;
FLD ST(1);
FMUL ST(0), ST(0);
FSUB;
FSQRT;
FXCH;
FPATAN;
FLD conv;
FMUL;
RET;
@exit:
FSUB ST(0), ST(0);
RET;
end;
Может быть, я уже немножко не в тему =)
Однако вот кодес, коим пользовался когда-то я.
Предполагается, что нормализацию векторов провели заранее.
ЗЫ. где-то валяется и SSE-вариант.
Найду - выложу...
или не надо? :Р
-
Чёрт, как всегда забыл.
Структура PT3D:
PT3D = record
x, y, z : Single;
end;
-
Гы... И если уж быть флудером до конца:
RTD = 180/pi
-
> Дуб © (17.09.08 12:56) [91]
Что "В каком таком"?...
Вектор вообще не связан с каким-либо пространством. Отобразить его можно в разных пространствах и соответствено, чтобы узналь угол между векторами сперва надо определить это понятие.
Если принять чть tg(@)=a*b, то оно так и будет не зависимо от того, где мы это отобразим
ЗЫ
@ - угол
a, b - вектора
* - скалярное произведение
-
до 200 дойдет?
-
сотый!
-
> Dennis I. Komarov © (17.09.08 13:12) [98]
Бугага. Посмешил на старости лет. Я все что надо сказал. Прочти и не пиши ерундой.
-
> Дуб © (17.09.08 13:17) [101]
И чего не понравилось?