规范化 canvas wpf 中的真实世界数据
normalizing real world data inside the canvas wpf
我在一个项目中工作,我必须在 ViewBox 中将现实世界坐标中的某些点可视化到 canvas 中。以下是数据收集的示例:
X Y
-40085.119 266560.373
-40084.72 266560.736
-40083.51165 266559.4097
-41606.37001 263437.3891
-40098.72351 266327.5417
-40075.57653 266399.5039
-40076.09771 266398.6382
-40629.41856 265374.2896
-40698.41477 265214.1637
转换真实世界的数据以适应 canvas。我正在调用以下函数。
public double changeScale(double point, double min, double max, double size){
double convertedValue;
convertedValue = (point - min) / (max - min);
convertedValue *= size;
return convertedValue;
}
我使用规定的功能如下:
sc.changeScale(x, xmax, xmax, mycanvas.Width)
sc.changeScale(y, ymax, ymin, mycanavs.Height)
xmin,xmax和ymin,ymax是从实时数据table中取出来的。我的 canvas 的大小是 1280 X 720。例如:如果一个元素的坐标为 (XMax, YMax),那么它将绘制在 (1280,720) 上,同样,如果一个元素的坐标为 (XMin, XMax) ), 那么它将绘制在 (0,0) 上。
这仍然有效,但我发现这是不正确的,因为我得到的 noramlized 地图被拉伸了,这是对现实世界的不准确可视化。我将我的结果与另一个软件的结果进行了比较。下图是我创建的:
我的预期结果是:
您需要保持宽高比。这意味着您必须使用相同的 size
更改 X 和 Y 的比例。
先求Maximum-X size和Maximum-Y size,然后取大的作为size。
更新
- 找出整个集合的最小 X、最大 X、最小 Y 和最大 Y。
- 找到 (MaxX - MinX) 和 (MaxY - MinY) 之间的最大值。
- 将该值用作
scale
。
我在一个项目中工作,我必须在 ViewBox 中将现实世界坐标中的某些点可视化到 canvas 中。以下是数据收集的示例:
X Y
-40085.119 266560.373
-40084.72 266560.736
-40083.51165 266559.4097
-41606.37001 263437.3891
-40098.72351 266327.5417
-40075.57653 266399.5039
-40076.09771 266398.6382
-40629.41856 265374.2896
-40698.41477 265214.1637
转换真实世界的数据以适应 canvas。我正在调用以下函数。
public double changeScale(double point, double min, double max, double size){
double convertedValue;
convertedValue = (point - min) / (max - min);
convertedValue *= size;
return convertedValue;
}
我使用规定的功能如下:
sc.changeScale(x, xmax, xmax, mycanvas.Width)
sc.changeScale(y, ymax, ymin, mycanavs.Height)
xmin,xmax和ymin,ymax是从实时数据table中取出来的。我的 canvas 的大小是 1280 X 720。例如:如果一个元素的坐标为 (XMax, YMax),那么它将绘制在 (1280,720) 上,同样,如果一个元素的坐标为 (XMin, XMax) ), 那么它将绘制在 (0,0) 上。
这仍然有效,但我发现这是不正确的,因为我得到的 noramlized 地图被拉伸了,这是对现实世界的不准确可视化。我将我的结果与另一个软件的结果进行了比较。下图是我创建的:
我的预期结果是:
您需要保持宽高比。这意味着您必须使用相同的 size
更改 X 和 Y 的比例。
先求Maximum-X size和Maximum-Y size,然后取大的作为size。
更新
- 找出整个集合的最小 X、最大 X、最小 Y 和最大 Y。
- 找到 (MaxX - MinX) 和 (MaxY - MinY) 之间的最大值。
- 将该值用作
scale
。