从屏幕坐标转换为任意比例

Convert from screen coordinates to an arbitrary scale

我有一些最大宽度为 650 的屏幕坐标;所以 0 - 650。 如果我有一些任意比例,比如从 40 到 50,其中 40 是最低点,50 是最大值。如何转换相对于比例尺的屏幕坐标 430?

还有其他情况吗?根据您给我们的信息,它只是一个线性映射,将 0 映射到 40,将 650 映射到 50。

考虑到这一点,新坐标中的每个单位等于旧坐标中的 65。那么430/65=6.61,也就是说430映射到40+6.61=46.61

这只是数学:

static double ScreenToScaled(int screenMin, int screenMax, int scaledMin, int scaledMax, int screenValue)
{
    return (double)(screenValue - screenMin) / (double)(screenMax - screenMin) * (scaledMax - scaledMin) + scaledMin;
}

要了解它是如何工作的,您可以绘制屏幕值与缩放值对比的图表:

(对图表的粗略表示歉意。)

根据您的屏幕值和缩放值,您的转化最终为 y = 0.01538 x + 40 其中 x是屏幕值,y是缩放后的值。