开发者

Convert axes coordinates to pixel coordinates

I'm looking for an efficie开发者_开发知识库nt way to convert axes coordinates to pixel coordinates for multiple screen resolutions.

For example if had a data set of values for temperature over time, something like:

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

What's the most efficient way to transform the dataset to pixel coordinates so I could draw a graph on a 800x600 screen.


Assuming you're going from TEMP_MIN to TEMP_MAX, just do:

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

where #define Y_MAX (600). Similarly for the x-coordinate. This isn't tested, so you may need to modify it slightly to deal with the edge-case (temps[i] == TEMP_MAX) properly.


You first need to determine the maximum and minimum values along each axis. Then you can do:

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

...and the same for Y. (Although you will probably want to invert the Y axis).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜