Источник данных карты поверхности Неврона - PullRequest
0 голосов
/ 07 февраля 2011

Я смотрел на вышеупомянутую диаграмму и пытаюсь выяснить, как работает их метод "FillData" в приведенном ниже фрагменте.

private void FillData(NGridSurfaceSeries surface)
        {
            double y, x, z;
            int nCountX = surface.Data.GridSizeX;
            int nCountZ = surface.Data.GridSizeZ;

            const double dIntervalX = 30.0;
            const double dIntervalZ = 30.0;
            double dIncrementX = (dIntervalX / nCountX);
            double dIncrementZ = (dIntervalZ / nCountZ);

            z = -(dIntervalZ / 2);

            for(int j = 0; j < nCountZ; j++, z += dIncrementZ)
            {
                x = -(dIntervalX / 2);

                for(int i = 0; i < nCountX; i++, x += dIncrementX)
                {
                    y = (x * z / 64.0) - Math.Sin(z / 2.4) * Math.Cos(x / 2.4);
                    y = 10 * Math.Sqrt( Math.Abs(y) );

                    if(y <= 0)
                    {
                        y = 1 + Math.Cos(x / 2.4);
                    }

                    surface.Data.SetValue(i, j, y);
                }
            }
        }

Документация крайне редкая, и мне хотелось бычтобы передать список значений вместо «Y», но я не знаю, что делает остальная часть кода, если кто-то здесь работал с этим, пожалуйста, стреляйте.

1 Ответ

0 голосов
/ 27 июля 2011

На самом деле вам нужен только метод surface.Data.SetValue, остальная часть кода просто генерирует некоторые данные. Хранилище данных Grid Surface похоже на двумерную таблицу - i и j - это индексы, которые определяют точку данных, а y - это значение точки данных. Например, следующий код заполняет некоторые данные на поверхности сетки 3x2:

// first row
surface.Data.SetValue(0, 0, 7.53);
surface.Data.SetValue(1, 0, 6.19);
surface.Data.SetValue(2, 0, 9.78);

// second row
surface.Data.SetValue(0, 1, 5.35);
surface.Data.SetValue(1, 1, 4.71);
surface.Data.SetValue(2, 1, 8.85);

Надеюсь, это поможет.

...