Я работаю над проектом, в котором я должен визуализировать определенные точки в координатах реального мира в холсте внутри ViewBox. Ниже приведен образец сбора данных:Нормализация данных реального мира внутри холста wpf
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
Чтобы преобразовать данные реального мира в посадку внутри холста. Я вызываю следующую функцию.
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, уты вынимают из таблицы данных в реальное время. Размер моего холста составляет 1280 X 720. Например: если элемент имеет координату (XMax, YMax), тогда он будет нанесен на (1280,720), а также, если элемент имеет координату (XMin, XMax), тогда он будет отображаться на (0,0). Это все еще работает, но я обнаружил, что это неверно, потому что карта, которую я получаю, растянута, что является неточной визуализацией реального мира. Я сравнил мой результат с другим программным обеспечением. Следующее изображение, что я создал:
Можете ли вы рассказать больше, пожалуйста? – Skaranjit
Я обновил ответ. Обратите внимание, что для поддержания соотношения сторон вы должны умножать значения оси X и Y-оси на одну и ту же сумму, и это то, что мой ответ пытается объяснить, как это сделать. –
Я последовал за вашим ответом, но я зациклен на использовании значения как масштаба. Я использовал соотношение (XMax - XMin)/(YMax - YMin) для масштабирования. я умножал оба по одному и тому же коэффициенту, но он просто уменьшал его. – Skaranjit