从屏幕坐标转换为任意比例
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是缩放后的值。
我有一些最大宽度为 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是缩放后的值。