Объясните формулы "матрица вращения на плоскости"10.02.2025, 22:29. Показов 7985. Ответов 109
Метки нет (Все метки)
Добрый день
Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их объяснили первокурсникам? Желательно "под запись", т.е. что должно быть у детей в конспектах? Спасибо
0
|
|
| 10.02.2025, 22:29 | |
|
Ответы с готовыми решениями:
109
Угловая скорость вращения тела на плоскости Поверхность вращения. Построение двумерного графика в 3д плоскости. Матрица вращения |
|
Супер-модератор
|
|||
| 27.02.2025, 15:57 | |||
|
0
|
|||
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
||
| 28.02.2025, 22:42 | ||
|
0
|
||
| 28.02.2025, 23:38 [ТС] | ||
|
0
|
||
|
5514 / 2867 / 571
Регистрация: 07.11.2019
Сообщений: 4,751
|
|||
| 01.03.2025, 12:17 | |||
|
Кстати, поворот вектора на комплексной плоскости вокруг начала координат это просто умножение его на комплексное число cos(a)+j*sin(a).
1
|
|||
| 01.03.2025, 13:17 [ТС] | |||
0
|
|||
|
52 / 53 / 2
Регистрация: 10.06.2023
Сообщений: 730
|
|
| 01.03.2025, 14:08 | |
|
Если возникла конкретная задача: "нужно повернуть заданный вектор вокруг заданной оси". То ее решение легко построить.
Направление вектора "ось" принимаем за ось z. Перпендикулярную плоскость считаем плоскостью (x.y) Проекция вращаемого вектора на плоскость направим по назначенной оси x. Дальше просто.
1
|
|
| 02.03.2025, 15:51 [ТС] | ||||
Вот мое объяснение, продолжите его, или, еще лучше, предложите свое. У человека с минимальной подготовкой должен быть такой конспект чтобы сдать экзамен. Нормальный все поймет и сдаст на "отлично", тупой - что-то запомнит и до троечки доползетКликните здесь для просмотра всего текста
1.
x' = x * cos(a) - y * sin(a) y' = x * sin(a) + y * cos(a) Эти формулы могут быть использованы для поворота 2D вектора/координаты (x, y) вокруг точки (0, 0) на угол a. Положительный угол соответствует вращению против часовой стрелки. Говорят также CCW (CounterColckWise) 2. Доказательство/обоснование. Данные формулы легко получаются из тригонометрических для суммы углов cos(a + b) = cos(a) * cos(b) - sin(a) * sin(b) sin(a + b) = cos(a) * sin(b) + sin(a) * cos(b) В равенствах умножим обе части на r - длину вектора (x, y) и заменим параметрические координаты на декартовы x = r * cos(b) y = r * sin(b) x' = r * cos(a + b) y' = r * sin(a + b) 3. Данные формулы часто записываются в виде матриц Важно: данная запись в нотации "column major" широко используемой во многих приложениях, напр OpenGL. Матрица применяется "слева", т.е. строка матрицы множится на вектор-столбец (трансформируемой) координаты 4. Эти же формулы используются для поворота 3D векторов/координат. В этом случае x и y не числа(скаляры), а ортогональные 3D вектора равной длины (но необязательно единичной). Результатом будет поворот этих векторов вокруг оси проходящей через начало координат (0, 0, 0) в направлении z = cross(x, y) На практике обычно мы имеем не пару векторов, а только один, напр x который нужно повернуть вокруг заданной (вектором) оси. В этом случае ... . Легко "налить воды", а вот написать кратко но полно..
0
|
||||
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
|||
| 02.03.2025, 17:42 | |||
|
0
|
|||
| 02.03.2025, 18:43 [ТС] | |||
|
y' = y * cos(a) - z * sin(a) // поворот в плоскости YZ вокруг оси X z' = z * cos(a) + y * sin(a) z' = z * cos(a) - x * sin(a) // поворот в плоскости ZX вокруг оси Y x' = x * cos(a) + z * sin(a)
0
|
|||
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
|||
| 03.03.2025, 00:09 | |||
|
Поэтому вопрос: Каким образом, умножая длину на число (косинус угла), можно получить 3D вектор? Или хотя бы что-нибудь про композицию трёх поворотов. Это ведь одна из первых лекций для тех кто учится всего несколько недель.
0
|
|||
| 03.03.2025, 13:04 [ТС] | |||
|
Интересно наблюдать как срабатывает "рефлекс". Ага, поворот - значит матрица! А вот и нет, данные формулы позволяют вращать "без всяких матриц". Ну и опять: само по себе "матрица" ровным счетом ничего не объясняет, ведь матрица - это "откомпилированный" результат содержательного решения. Напр из данных формул можно получить матрицу 3х3 (хотя сделать это "руками" утомительно)
0
|
|||
|
Модератор
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
|
|||||
| 03.03.2025, 16:45 | |||||
|
Было бы понятнее, если это объединить в одно предложение: "Эти же формулы используются для поворота 3D векторов/координат вокруг оси Z" Второе предложение (про "ортогональные 3D вектора равной длины") вообще не могу понять.
0
|
|||||
| 03.03.2025, 18:50 [ТС] | |||
|
Пара (2 вектора) исходных необходима для расчета, но часто дан один и пересчитать нужно его. Можно "назначить" данный вектор x и, используя известную ось z, посчитать y или наоборот, считать x от y. Результат и расчеты получаются одинаковы, это еще предстоит объяснить. Длина почти всегда знаковая, напр скаляры x и y. x' = a * x + b * y + c * z Откуда взялись (a, b, c) что сидят в матрице? Никакой информации об этом уже нет, восстановить логику решения из/по матрице обычно невозможно. "Достоинства есть продолжения недостатков". Да, и я упустил одну важную деталь при использовании этих формул для векторов. Ну "еще не вечер"
0
|
|||
|
52 / 53 / 2
Регистрация: 10.06.2023
Сообщений: 730
|
|
| 04.03.2025, 09:39 | |
|
Вектор, относительно которого вращается второй вектор описывается тремя его проекциями на оси заданной неменяющейся системы координат ( x(t), y(t), z(t)). Изменение координат по времен может описывать как вращение вектора, так и изменение его длины. Второй вектор ( x1(t), y1(t), z1(t)).
Уравнения, описывающие его вращение вокруг первогj: 1) постоянство его длины x1(t)**2+y1(t)**2+z1(t)**2=V1 const 2) проекция его на первый вектор постоянна: x1(t)*x(t)+y1(t)*y(t)+z1(t)*z(t)=x1(0)*x (0)+y1(0)*y(0)+z1(0)*z(0) - это число Выразим из первого, на пример, x1(t), из второго, на пример, y1(t), мы получаем уравнение для изменения z1(t) с вравой частью, содержащей только параметры движения первого вектора. Считайте!
0
|
|
| 04.03.2025, 16:28 [ТС] | |||
А здесь еще и неправильно, народная мудрость говорит: не связывайся с длиной/квадратом. Это преобразование/решение НЕлинейно и матрицей не выражается. А матрица вращения точно есть
0
|
|||
|
52 / 53 / 2
Регистрация: 10.06.2023
Сообщений: 730
|
|
| 04.03.2025, 20:00 | |
|
постоянство проекции при постоянстве длины это и есть условие того, что второй вектор может только вращаться вокруг первого.
Если пришлете программу или кусок программы, в который надо вставить вращение вектора вокруг заданного, то я могу помочь. Разговор о матрицах тербует некоторого уровня знаний, но, обладая разумом, без него можно почти всегда обойтись
0
|
|
| 04.03.2025, 21:41 [ТС] | ||
|
Не по теме: Не все пишут/постят в надежде получить помощь :)
0
|
||
|
5514 / 2867 / 571
Регистрация: 07.11.2019
Сообщений: 4,751
|
|
| 04.03.2025, 21:48 | |
|
1
|
|
| 04.03.2025, 21:48 | |
|
Помогаю со студенческими работами здесь
80
Матрица вращения Матрица вращения (X->Y->Z) Метод косоугольного вращения. Матрица поворота Матрица вращения облака точек вида x,y,z В какой момент времени после начала вращения платформы груз начнет соскальзывать, объясните как решать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|