|
|
  |
Как вычислить проекцию вектора, Помогите разобраться с геометрией |
|
|
|
Jan 4 2011, 03:08
|
Вечный студент
   
Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262

|
Если я правильно понял вопрос (X,Y, A, B, C - в одной плоскости)
1. Считаем длину вектора: L=корень(x^2+y^2) x,y - проекции вектора на оси Х и Y
2. Считаем угол между вектором и осью Х: φ=arctg(y/x), при │х│>=│y│; кроме того, если x<0, то к φ надо добавить еще 180 φ=90-arctg(x/y), при │x│<│y│; кроме того, если y<0, то к φ надо добавить еще 180
3. Определяем углы между каждой из А,В,С и Х: α≡(A ^ X) β=α+120 γ=α+240
4. Считаем искомые проекции: a=L*cos(φ-α) b=L*cos(φ-β) c=L*cos(φ-γ)
Сообщение отредактировал Diusha - Jan 4 2011, 04:25
|
|
|
|
|
Jan 4 2011, 05:44
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 11-06-10
Пользователь №: 57 871

|
Цитата(Diusha @ Jan 4 2011, 09:08)  Если я правильно понял вопрос (X,Y, A, B, C - в одной плоскости) Да, в одной. Спасибо! Если я правильно понял, то если если ось А не тождественна оси Х, то просто добавляем угол сдвига. Цитата Умножаем единичный вектор i=(1,0) на матрицу поворота и получаем координаты. Первый раз было понятнее  Набравшись наглости хочу спросить. А как это будет выглядеть в разрезе FPGA и Verilog?
|
|
|
|
|
Jan 5 2011, 12:30
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(Impartial @ Jan 4 2011, 14:44)  Первый раз было понятнее  Первая часть моего сообщения относилась к вопросу как вычислить векторы a, b и c. Я почему-то решил что они тоже могут вращаться относительно осей X,Y, тогда формализм с матрицами поворота будет не лишним. Сама матрица поворота R φ выглядит так: cosφ -sinφ sinφ cosφ если вектор u получается из вектора v поворотом на угол φ, то (u x,u y) = R φ·(v x,v y) T(T - это транспонирование, т.е. матрица умножается на вектор-столбец, в результате получается вектор-строка.) А то столбцы в тексте изображать не удобно  Цитата Набравшись наглости хочу спросить. А как это будет выглядеть в разрезе FPGA и Verilog? Если положение осей A, B, C относительно X,Y не меняется, то компоненты векторов a, b и c постоянные и известны заранее. Тогда всё сводится к вычислению трёх скалярных произведений V· a, V· b, V· c, всего шесть умножений на константы и три сложения.
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|