我正在寻找一种将轴坐标转换为多个屏幕分辨率的像素坐标的有效方法。
例如,如果有一个温度值随时间变化的数据集,如:
int temps[] = {-8, -5, -4, 0, 1, 0, 3};
int times[] = {0, 12, 16, 30, 42, 50, 57};
将数据集转换为像素坐标的最有效方法是什么,这样我就可以在800x600的屏幕上绘制图形。
答案 0 :(得分:1)
假设您从TEMP_MIN
转到TEMP_MAX
,请执行以下操作:
y[i] = (int)((float)(temps[i] - TEMP_MIN) * ((float)Y_MAX / (float)(TEMP_MAX - TEMP_MIN)));
其中#define Y_MAX (600)
。类似地,对于x坐标。这未经过测试,因此您可能需要稍微修改它以正确处理边缘情况(temps[i] == TEMP_MAX
)。
答案 1 :(得分:1)
首先需要确定每个轴的最大值和最小值。然后你可以这样做:
x_coord[i] = (x_val[i] - x_max) * X_RES / (x_max - x_min);
...和Y一样。(虽然你可能想要反转Y轴)。