Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 16.07.2013
Сообщений: 42

Матрица перехода между двумя системами координат в 2D

19.07.2016, 10:54. Показов 3421. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 2 системы координат в 2D пространстве. Есть координаты 2 точек в этих системах координат (как я понимаю, необходимо как раз 2 точки). Нужно найти матрицу перехода (X, Y, fi) между этими системами координат.

Не подскажите, где взять готовый код на C++ или другом языке для решения этой задачи. А то решаю в лоб, получаются довольно большие уравнения с тригонометрией и несколькими решениями).
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.07.2016, 10:54
Ответы с готовыми решениями:

Переход между системами координат
Добрый вечер. Буду благодарна за помощь. Имеется фигура построенная в цилиндрической системе координат: a=8; s=1; ...

Как передать данные по сети между двумя системами?
У меня два убунту в одной локальной сети, как мне можно передать из одного серверного убунту в десктопную убунту, без установок фтп и...

Напишите программу, переводящую запись числа между двумя произвольными системами счисления
На вход программа получает три величины: n, A, k, где n и k – натуральные числа от 2 до 36: основания системы счисления, A – число,...

4
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
19.07.2016, 13:13
Во-первых, совпадает ли основание (нулевая точка) у этих двух координатных систем? Если да, то матрицу перехода надо будет расширить до однородных координат (на самом деле они-то как раз неоднородные, но такова терминология), если нет, достаточно будет одной точки.
Во-вторых, никакой тригонометрии и множественных решений не требуется, всё выполняется обычными линейными преобразованиями.
1
1 / 1 / 0
Регистрация: 16.07.2013
Сообщений: 42
19.07.2016, 14:51  [ТС]
Nick Alte, нет, нулевая точка не совпадает.

Из этой матрицы для 2 точек получается 4 уравнения и 3 неизвестных.
Наверное можно решить проще, но как?
Миниатюры
Матрица перехода между двумя системами координат в 2D  
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
19.07.2016, 20:27
Лучший ответ Сообщение было отмечено Vlad222222 как решение

Решение

Получается 2 линейных уравнения с 3 неизвестными для одной точки и 2 уравнения с теми же 3 неизвестными для второй, более, чем достаточно. Принимаем синусы-косинусы за независимые величины (то есть, сам угол не ищем), решаем систему из 3 любых уравнений и имеем результат. Если 4 уравнение будет противоречить решению, то точки взяты неправильно (да, это возможно).
Решение системы из 3 линейных уравнений - дело довольно-таки простое, есть даже готовые формулы с детерминантом и минорами.
0
1 / 1 / 0
Регистрация: 16.07.2013
Сообщений: 42
20.07.2016, 11:35  [ТС]
Отлично, всё получилось, может кому пригодится:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <eigen3/Eigen/Dense>
 
using namespace Eigen;
using namespace std;
 
int main()
{
    float x1{-5}, y1{15}, x2{25}, y2{-5}, x1_new{-15*sqrt(2)}, y1_new{-10*sqrt(2)}, x2_new{10*sqrt(2)}, y2_new{-5*sqrt(2)};
 
    //https://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html
    //http://stackoverflow.com/questions/3276341/solving-a-system-of-equations-programmably
 
    Matrix4f A;
    Vector4f b;
 
    A << x1_new, -y1_new, 1, 0,
            y1_new, x1_new, 0, 1,
            x2_new, -y2_new, 1, 0,
            y2_new, x2_new, 0, 1;
 
    b << x1, y1, x2, y2;
 
    cout << "Here is the matrix A:\n" << A << endl;
    cout << "Here is the vector b:\n" << b << endl;
    Vector4f x = A.colPivHouseholderQr().solve(b);
    cout << "The solution is:\n" << x << endl;
    cout << "ang " << atan2(x[1], x[0])*180/M_PI ;
 
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2016, 11:35
Помогаю со студенческими работами здесь

Комбинация перехода между двумя процессорами
комбинация перехода между двумя процессорами

Растояние по прямой между двумя парами координат
Кто работал с гугловскими картами? Интересует вопрос определения расстояния между двумя парами координат. То есть я в доке нашёл...

Расстояние между двумя точками в системе координат
Всем привет. В школе задали написать код, который будет находить расстояние между двумя точками в системе координат. Сколько я не...

Построить линию между двумя точками географических координат графически
Имея широту и долготу двух точек, можно ли каким-то образом изобразить графически как она будет направлена?

Найти точку координат между двумя точками с заданными координатами и расстоянием
Здравствуйте. Был бы рад если подскажите как вычислить точку координат между двумя точками с заданными координатами и расстоянием, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru