Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как вычислить проекцию вектора
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Impartial
Дана проекция вектора на плоскую прямоугольную систему координат X,Y.
Как вычислить проекцию этого вектора на плоскую систему координат с тремя осями А,В,С сдвинутыми на 120 градусов.
rezident
Набираете в строке запроса поисковику "векторное управление" и читаете. Вот, например, Векторное управление асинхронными двигателями. Учебное пособие. Усольцев А.А. в виде pdf.
Impartial
Я знаком с преобразованием Кларка-Парка, но там идет преобразование неподвижной системы координат во вращающуюся с привязкой к базовому вектору.
Я неправильно задал наверное вопрос.
Вот более подробно.
Есть круглая платформа угол наклона которой управляется тремя катушками расположенными под углом 120 градусов снизу платформы.
Для управление сим устройством получаем проекцию вектора на ось X,Y.
Необходимо получить проекцию этого управления на оси А,В,С.
Diusha
Если я правильно понял вопрос (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(φ-γ)
SSerge
Для начала предлагаю определить единичные векторы a, b и c, совпадающие по направлению с осями новых координат.
Компоненты векторов a=(ax,ay), b=(bx,by) и c=(cx,cy) в декартовой системе координат можно вычислить зная угол поворота соответствующих осей относительно оси X.
Умножаем единичный вектор i=(1,0) на матрицу поворота и получаем координаты.

Проекция одного вектора на другой считается через скалярное произведение.
Проекция вектора V = (Vx, Vy) на ось A будет V·a = Vx·ax + Vy·ay.
Impartial
Цитата(Diusha @ Jan 4 2011, 09:08) *
Если я правильно понял вопрос (X,Y, A, B, C - в одной плоскости)

Да, в одной.
Спасибо!
Если я правильно понял, то если если ось А не тождественна оси Х, то просто добавляем угол сдвига.

Цитата
Умножаем единичный вектор i=(1,0) на матрицу поворота и получаем координаты.


Первый раз было понятнее sm.gif

Набравшись наглости хочу спросить. А как это будет выглядеть в разрезе FPGA и Verilog?
Diusha
Цитата(Impartial @ Jan 4 2011, 11:44) *
Если я правильно понял, то если если ось А не тождественна оси Х, то просто добавляем угол сдвига.

правильно
SSerge
Цитата(Impartial @ Jan 4 2011, 14:44) *
Первый раз было понятнее sm.gif

Первая часть моего сообщения относилась к вопросу как вычислить векторы a, b и c.
Я почему-то решил что они тоже могут вращаться относительно осей X,Y, тогда формализм с матрицами поворота будет не лишним. Сама матрица поворота Rφ выглядит так:
cosφ -sinφ
sinφ cosφ
если вектор u получается из вектора v поворотом на угол φ, то
(ux,uy) = Rφ·(vx,vy)T
(T - это транспонирование, т.е. матрица умножается на вектор-столбец, в результате получается вектор-строка.) А то столбцы в тексте изображать не удобно sm.gif
Цитата
Набравшись наглости хочу спросить. А как это будет выглядеть в разрезе FPGA и Verilog?

Если положение осей A, B, C относительно X,Y не меняется, то компоненты векторов a, b и c постоянные и известны заранее.
Тогда всё сводится к вычислению трёх скалярных произведений V·a, V·b, V·c, всего шесть умножений на константы и три сложения.
Impartial
Спасибо! Разобрался
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.