Преобразовать координаты осей в пиксельные координаты - PullRequest
1 голос
/ 30 сентября 2010

Я ищу эффективный способ преобразования координат осей в пиксельные координаты для нескольких разрешений экрана.

Например, если имелся набор данных для значений температуры во времени, что-то вроде:

int temps[] = {-8, -5, -4, 0, 1, 0, 3};
int times[] = {0, 12, 16, 30, 42, 50, 57};

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

Ответы [ 2 ]

1 голос
/ 30 сентября 2010

Сначала необходимо определить максимальные и минимальные значения по каждой оси.Затем вы можете сделать:

x_coord[i] = (x_val[i] - x_max) * X_RES / (x_max - x_min);

... и то же самое для Y. (Хотя вы, вероятно, захотите инвертировать ось Y).

1 голос
/ 30 сентября 2010

Предполагая, что вы переходите от TEMP_MIN к TEMP_MAX, просто выполните:

y[i] = (int)((float)(temps[i] - TEMP_MIN) * ((float)Y_MAX / (float)(TEMP_MAX - TEMP_MIN)));

, где #define Y_MAX (600).Аналогично для координаты х.Это не проверено, поэтому вам может потребоваться немного изменить его, чтобы правильно обработать крайний регистр (temps[i] == TEMP_MAX).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...