crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Передвижение по графику при нажатии кнопки, непонятен алгоритм
AD
  опции профиля:
сообщение 16.7.2008, 11:49
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Теперь у меня появился такой вопросец. :) При нажатии на кнопку мыши мы знаем позицию курсора, также мы знаем границы прямоугольника, ограничивающего область рисования. Так вопрос таков: непонятно, как заставить позицию, где находится курсор, стать центром этой области? Кто-нибудь сможет подсказать как это сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.7.2008, 13:12
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


AD, пора выкладывать Т.З. на проект ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 16.7.2008, 13:28
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 16.7.2008, 14:12) *
AD, пора выкладывать Т.З. на проект ;)

Техническое задание? Нет, это запрещено. Ну а впринципе, как такогого его нет, сборка требований из других ТЗ.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.7.2008, 12:11
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Может сможет кто-нибудь подсказать, как перевести текущие физические координаты в координаты графика.
Для примера, вот рисунок
[attachment=132:context_...u_coords.JPG]

Как видно из рисунка: известны координаты границ (мин., макс. значения) графика, а также текущая физическая координата (690, 632). Так вот надо перевести, чтобы для данной точки получилось что-то вроде такого: (-24.45, 155.405). Подскажите, пожалуйста, какое действие надо сделать, чтобы совершить это преобразование координат?

P.S. я понимаю, что это задача, обратная задаче масштабирования, но что-то я слегка запутался, какие в итоге координаты я получаю.

Сообщение отредактировал AD - 17.7.2008, 13:18
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.7.2008, 13:47
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Виноват! :blush2:

Я додумался сам как это сделать:

вот такой маленький алгоритм (вдруг кому-то пригодится! :)):
double x = events -> pos().x();
double y = events -> pos().y();
double j = (x - rect.left()) / (rect.width() - 1) * settings.numXTicks;
double k = (rect.bottom() - y) / (rect.height() - 1) * settings.numYTicks;
double sx = (mode -> x_param.is_max) ? settings.minX + (j * settings.spanX() / settings.numXTicks)
                    : settings.maxX - (j * settings.spanX() / settings.numXTicks);
double sy = (mode -> y_param.is_max) ? settings.minY + (k * settings.spanY() / settings.numYTicks)
                    : settings.maxY - (j * settings.spanY() / settings.numYTicks);

QPointF coordinate(sx, sy);
/// ну а далее уже использование этих координат


Сообщение отредактировал AD - 17.7.2008, 13:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 18:54