0

我一直在查看上面提到的图表,并试图弄清楚他们在下面的片段中的“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”,但我不知道其余代码在做什么,如果这里有人使用过这个,请拍摄。

4

1 回答 1

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

我希望这有帮助。

于 2011-07-27T09:48:34.870 回答