2011-02-07 9 views
0

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

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); 
       } 
      } 
     } 

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

ответ

0

На самом деле вам нужен только метод 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); 

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