Объясните формулы "матрица вращения на плоскости"10.02.2025, 22:29. Показов 8786. Ответов 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
|
|||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,890
|
||
| 28.02.2025, 22:42 | ||
|
0
|
||
| 28.02.2025, 23:38 [ТС] | ||
|
0
|
||
|
5525 / 2878 / 572
Регистрация: 07.11.2019
Сообщений: 4,773
|
|||
| 01.03.2025, 12:17 | |||
|
Кстати, поворот вектора на комплексной плоскости вокруг начала координат это просто умножение его на комплексное число cos(a)+j*sin(a).
1
|
|||
| 01.03.2025, 13:17 [ТС] | |||
0
|
|||
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 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
|
||||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,890
|
|||
| 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
|
|||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,890
|
|||
| 03.03.2025, 00:09 | |||
|
Поэтому вопрос: Каким образом, умножая длину на число (косинус угла), можно получить 3D вектор? Или хотя бы что-нибудь про композицию трёх поворотов. Это ведь одна из первых лекций для тех кто учится всего несколько недель.
0
|
|||
| 03.03.2025, 13:04 [ТС] | |||
|
Интересно наблюдать как срабатывает "рефлекс". Ага, поворот - значит матрица! А вот и нет, данные формулы позволяют вращать "без всяких матриц". Ну и опять: само по себе "матрица" ровным счетом ничего не объясняет, ведь матрица - это "откомпилированный" результат содержательного решения. Напр из данных формул можно получить матрицу 3х3 (хотя сделать это "руками" утомительно)
0
|
|||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,890
|
|||||
| 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
|
|||
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 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
|
|||
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 04.03.2025, 20:00 | |
|
постоянство проекции при постоянстве длины это и есть условие того, что второй вектор может только вращаться вокруг первого.
Если пришлете программу или кусок программы, в который надо вставить вращение вектора вокруг заданного, то я могу помочь. Разговор о матрицах тербует некоторого уровня знаний, но, обладая разумом, без него можно почти всегда обойтись
0
|
|
| 04.03.2025, 21:41 [ТС] | ||
|
Не по теме: Не все пишут/постят в надежде получить помощь :)
0
|
||
|
5525 / 2878 / 572
Регистрация: 07.11.2019
Сообщений: 4,773
|
|
| 04.03.2025, 21:48 | |
|
1
|
|
| 04.03.2025, 21:48 | |
|
Помогаю со студенческими работами здесь
80
Матрица вращения Матрица вращения (X->Y->Z) Метод косоугольного вращения. Матрица поворота Матрица вращения облака точек вида x,y,z В какой момент времени после начала вращения платформы груз начнет соскальзывать, объясните как решать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|