Объясните формулы "матрица вращения на плоскости"10.02.2025, 22:29. Показов 8784. Ответов 109
Метки нет (Все метки)
Добрый день
Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их объяснили первокурсникам? Желательно "под запись", т.е. что должно быть у детей в конспектах? Спасибо
0
|
|
| 10.02.2025, 22:29 | |
|
Ответы с готовыми решениями:
109
Угловая скорость вращения тела на плоскости Поверхность вращения. Построение двумерного графика в 3д плоскости. Матрица вращения |
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 05.03.2025, 08:54 | |
|
Попробую еще раз: Есть два вектора скорости и "чайника". Первый движение первого задано, требуется, чтобы второй вектор был направлен под задаваемым углом к вектору скорости. Как им управлять. В плоском случае задача проста, если рассматривать в полярных координатах. Тогда угол между векторами просто разность их углов. Уравнение diff(alpha(t), t) = k*(alpha[v](t)-alpha(t)) решает задачу. Остаются только технически проблемы: определения направления векторов, техника организации изменения положения и т.п.
В пространственном случае все много сложнее но интереснее. Использование сферических переменных приводит к очень сложным формулам. Проще использовать уже обговоренное выражение для угла между векторами угол=отношению скалярного произведения к произведению модулей перемножаемых векторов. Если для простоты рассматривать единичные модули то: AngleT := v[1](t)*s[1]+v[2](t)*s[2]+v[3](t)*s[3] Эту формулу я не буду превращать в уравнение управления углом. Но из нее видно, что даже в случае постоянства скорости мы можем вертеться, а в случае переменной скорости мы можем осуществлять различные сценарии управления, так как уравнение одно, а параметров управления два. Общая картина достаточно сложная, что возможно объясняет длительность нашего обсуждения.
0
|
|
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 06.03.2025, 09:04 | |
|
Обсуждение очень длинное и запутанное, не могли бы вы переформулировать вопрос с учетом уже высказанного.
0
|
|
| 06.03.2025, 15:30 [ТС] | |||
Ну значит надо писать как хороший сериал который можно смотреть (у нас читать) с любого места. Не видно смысла менять исходный вопрос, все там нормально и коротко. А вот мое объяснение про повороты в 3D слабовато, надо улучшить. Предлагаю так
0
|
|||
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 06.03.2025, 17:01 | |
|
Непонятно " их координаты могут быть любыми, необязательно совпадать с осями/плоскостями СК."
Непонятно, что за плоскость определяемая двумя векторами (этого было бы достаточно) зачем еще какая-то ось, которая одна она была бы достаточна для определения условий вращения. Пункт 5 понятен и может быть реализован. Похожим на высказанный мною ранее методом. Пункты 5.1 и 5.2 изложение деталей пункта 5. Если ваш комментарий можно свести к задаче вращения вектора вокруг заданной оси с возможным изменением 3Dугла между ними, то перечитайте мой предыдущий комментарий. По моему, структура решения там описана.
0
|
|
| 06.03.2025, 17:45 [ТС] | |||
![]()
0
|
|||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,890
|
||
| 06.03.2025, 18:05 | ||
|
0
|
||
| 06.03.2025, 18:50 [ТС] | |||
Как-то Вы не очень этим интересовались напр при обсуждении скалярного произведения (косинус какого-такого угла?). Я знаю "трехгранный" (телесный) угол, "двугранный" (с плоскостью) но никогда не слышал про "трехмерный". Да, угол между векторами, без затей, просто "угол"Так что у нас с 5.2? Это ж классика (марксизма-ленинизма)
0
|
|||
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 07.03.2025, 10:30 | |
|
Обсуждение превратилось в спор из-за нечеткого представления проблемы. Что такое "поворот стартового поста "
Очень не приятно, что представив полную картину, описывающую поведение двух изменяющихся векторов в 3D пространстве, я не могу донести ее до заинтересованных в решении.
0
|
|
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,890
|
||||
| 07.03.2025, 11:19 | ||||
|
В отличии от направленного отрезка, на который можно посмотреть, вектор - это абстракция. Её можно только определить.
0
|
||||
| 07.03.2025, 16:36 [ТС] | |||||
0
|
|||||
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 08.03.2025, 12:20 | |
|
Так вы упираетесь, меняете постановку задачи, не отвечаете по вопросы (зачем еще ось, если есть уже два вектора). Повторяю, что если вы еще раз, кратко, четко опишите систему и желаемое вами, может быть мы продвинемся.
0
|
|
| 08.03.2025, 15:49 [ТС] | ||
|
Вы можете это сделать не капризничая и не привлекая десяток новых сущностей?
0
|
||
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 08.03.2025, 16:36 | |
|
Форма постановки задачи не правильная. Я могу работать с заранее заданными формулами. Если можно 2 - 3 фразами поставьте задачу, ничего не добавляя о форме ее решения.
0
|
|
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 09.03.2025, 08:25 | |
|
Наконец-то понял, что вы не ищете решение о повороте вектора, а ищете объяснение формулы. Это не ко мне. У каждого есть предел. Ранее в бурсе этот предел назывался "ослиный мост". У меня таким пределом является соотношение неопределенностей в квантовой механике.
0
|
|
| 09.03.2025, 13:33 [ТС] | |||
|
Не по теме:
Не раз видел как последнюю формулу изрядно "раздувают" обходясь без x1 и x2. Впечатление что делается это умышленно чтобы задавить начинающего огромными страшными вычислениями
0
|
|||
|
59 / 59 / 4
Регистрация: 10.06.2023
Сообщений: 949
|
|
| 09.03.2025, 15:18 | |
|
Судя по тексту, вам все понятно, возможно вам помогло общее продолжительное обсуждение. Единственно, что я хочу заметить ваш язык сильно отличается от моего. В моем у вектора есть только величина и направление, все остальное это параметры описания вектора.
0
|
|
| 10.03.2025, 13:00 [ТС] | |
|
Вот финальный "конспект студента"
Кликните здесь для просмотра всего текста
Формулы поворота
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 вычисляется как z = cross(x, y) 5. На практике часто возникает задача повернуть один вектор (считаем его вектором x) вокруг заданной заданной оси z. Для упрощения расчетов всегда считаем вектор z единичным/номированным. 5.1 Сначала рассмотрим частный случай когда x и z перпендикулярны. Считаем что вектора x, y и z образуют "правую" тройку. Для нее каждая ось получается векторным произведением двух предыдущих, т.е. x = cross(y, z) y = cross(z, x) z = cross(x, y) Отсюда нужный y = cross(z, x) и повернутый вектор x' = x * cos(a) - y * sin(a) Положительный угол поворота a здесь соответствует вращению по часовой (ось z направлена на наблюдателя). Можно было считать исходным вектор y, вычислить x для правой тройки и применить вторую формулу. Расчеты и результат получаются те же 5.2 Теперь рассмотрим общий случай: повернуть вектор x вокруг заданной заданной оси z причем эти вектора (в общем случае) не перпендикулярны В этом случае вращается лишь часть вектора: его проекция на плоскость вращения. При этом угол между исходным и повернутым векторами может быть от заданного a (если ось перпендикулярна) до нуля (если ось коллинеарна). Представим x в виде суммы 2 векторов: проекцию на ось поворота и проекцию на плоскость поворота x1 = z * dot(x, z) // x1 = проекция на ось поворота, она не вращается x2 = x - x1 // оставшаяся часть x2 = проекция на плоскость поворота, вращаем ее (см 5.1) // повернутый вектор x' = x1 + x2 * cos(a) + cross(z, x2) * sin(a) Разложение вектора на 2 части/компоненты - очень простой но и очень эффективный (базовый) прием Возлагал надежды на товарища с котом, но увы. Ладно, как получилось - так и получилось
0
|
|
| 10.03.2025, 13:00 | |
|
Помогаю со студенческими работами здесь
100
Матрица вращения Матрица вращения (X->Y->Z) Метод косоугольного вращения. Матрица поворота Матрица вращения облака точек вида x,y,z В какой момент времени после начала вращения платформы груз начнет соскальзывать, объясните как решать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|