Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
GranD1K
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 43
#1

Двумерные преобразования - C#

21.12.2015, 22:10. Просмотров 283. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Работаю с 2d преобразованиями на форме.

Загружаю из файла, набор отрезков с координатами.Произвожу некоторые преобразования(смещение,вращение и т.п.)
Как мне можно сделать совмещенную матрицу обратных преобразований?т.е. чтобы координаты пришли к исходному состоянию при загрузке. Использую однородные координаты.

У меня были следующие попытки составления:
1)D*(C*(B*A))
A-перенос;B-масштабирование;C-поворот; D-отражение и составлял к нему обратную матрицу
2)Такое же перемножение но без отражения
3)Простое перемножение обратных матриц каждого преобразования
http://www.cyberforum.ru/csharp-net/thread82506.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2015, 22:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Двумерные преобразования (C#):

Аффинные преобразования изображения
Добрый день. Написал небольшое приложение, которое осуществляет поворот...

Операция преобразования типа
Привет всем!!! Кто это видет! Проблема заключается в том что я не до конца...

Преобразования типа в DateTime
Вопрос следующего характера. В некотором файле имееться заголовок в котором...

Преобразования с использованием System.Encoding
Вобщем я перехожу на С# и столкнулся с проблемой преобразования. В статье...

Преобразования битовых данных в файл
Здравствуйте! Подскажите пожалуйста как преобразовать данные полученные через...

6
kolorotur
Эксперт .NET
9919 / 8304 / 2037
Регистрация: 17.09.2011
Сообщений: 14,289
22.12.2015, 11:14 #2
Цитата Сообщение от GranD1K Посмотреть сообщение
Произвожу некоторые преобразования(смещение,вращение и т.п.)
Как мне можно сделать совмещенную матрицу обратных преобразований?т.е. чтобы координаты пришли к исходному состоянию при загрузке.
Вам нужно найти обратную матрицу от вашей матрицы преобразований и применить ее к изображению.
Обратную матрицу можно найти с помощью метода Invert класса Matrix, живущего в пространстве System.Drawing.Drawing2D сборки System.Drawing.dll.
0
GranD1K
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 43
22.12.2015, 11:30  [ТС] #3
а как определить текущую матрицу преобразований?.т.е. я загрузил,и допустим.отразил вокруг начала координат,повернул вокруг произвольной точки и т.д. таких вариаций множество и у всех ведь различная матрица.
0
kolorotur
Эксперт .NET
9919 / 8304 / 2037
Регистрация: 17.09.2011
Сообщений: 14,289
22.12.2015, 14:46 #4
Цитата Сообщение от GranD1K Посмотреть сообщение
а как определить текущую матрицу преобразований?
Текущая матрица преобразований — это произведение всех матриц преобразований, которые применялись к изображению.
0
GranD1K
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 43
22.12.2015, 15:50  [ТС] #5
да я это понимаю. тогда мне нужно записывать в переменную все преобразования применяемые к изображению, а потом к ним находить обратную матрицу?
0
kolorotur
Эксперт .NET
9919 / 8304 / 2037
Регистрация: 17.09.2011
Сообщений: 14,289
22.12.2015, 15:52 #6
Цитата Сообщение от GranD1K Посмотреть сообщение
тогда мне нужно записывать в переменную все преобразования применяемые к изображению, а потом к ним находить обратную матрицу?
Да, причем сразу же "бесплатно" получаете функционал Undo
0
GranD1K
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 43
22.12.2015, 15:53  [ТС] #7
хорошо, я попробую. спасибо
0
22.12.2015, 15:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2015, 15:53
Привет! Вот еще темы с решениями:

Ошибка преобразования строки в дату
Всем привет! Есть следующий код: DateTime ActDate =...

Преобразования над объектом Graphics
Есть примерно такой код: class DrawObject { public PointF Location {...

Афинные преобразования для полигона
Добрый вечер,необходимо по точкам построить полигон,а потом реализовать...

двумерные массивы
using System; using System.Collections.Generic; using System.Linq; using...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru