2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 2d-преобразования: прямые и обратные
Сообщение15.09.2010, 16:23 


15/09/10
3
Всем привет. Пишу простую программу на js. Работа с 2d-графикой. Для изменений объектов использую матрицы преобразований координат. (поворот, масштаб, перемещение). Хочется, чтобы на объект можно было кликать мышкой. Занялся реализацией, сделал так:
1. Беру координаты мыши.
2. Умножаю на матрицу, обратную матрице преобразований.
3. Вычитаю соответствующие координаты объекта (х,у объекта становятся началом координат)
4. Смотрю, "попал-не попал"

Все работает ок, но если повернуть объект, то можно кликать немного ниже или правее, и все равно "попадать" по нему. Проверил функции перемножения матриц и нахождения обратной матрицы - ошибок не нашел. Может быть, мое предположение, что нужно использовать обратную матрицу, ошибочно?

 Профиль  
                  
 
 Re: 2d-преобразования: прямые и обратные
Сообщение15.09.2010, 22:28 


15/09/10
3
Что интересно, нашел обратное преобразование не с помощью стандартного способа (ну, всем известного, с минорами и делением на определитель), а решив систему уравнений - еще раз убедился, что преобразование найдено верно.

Что еще заметил: если двигать объект, вычисляя новые координаты домножением на матрицу перемещения, то все ок. Но если объект до этого был повернут, то расхождение между реальным объектом и тем, что получается обратной матрицей, увеличивается.

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

 Профиль  
                  
 
 Re: 2d-преобразования: прямые и обратные
Сообщение17.09.2010, 08:46 


15/09/10
3
Да, я был прав - дело было в погрешности вычислений. Она не увеличивалась при изменении входных данных, она появлялась при использовании чисел с плавающей запятой - обычное дело при вычислениях на компьютере. Достаточно оказалось округлять результаты вычислений до нужного количества знаков после запятой.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group