Exemple #1
0
        private static double ClosestValue(TeeChart.Styles.Custom3D src, double x, double z)
        {
            double maxdist = 1.0e+300;
            int    closer = -1;
            double tmpx, tmpz, dist;

            for (int i = 0; i < src.Count; i++)
            {
                tmpx = src.XValues[i] - x;
                tmpz = src.ZValues[i] - z;
                dist = Math.Sqrt(tmpx * tmpx + tmpz * tmpz);
                if (dist < maxdist)
                {
                    maxdist = dist;
                    closer  = i;
                }
            }
            if (closer == -1)
            {
                return(0.0);
            }
            else
            {
                return(src.YValues[closer]);
            }
        }
Exemple #2
0
        public static void CreateGrid(TeeChart.Styles.Custom3D src, TeeChart.Styles.Custom3DGrid dst, int gridsize)
        {
            double tmpminx = src.XValues.Minimum;
            double tmpminz = src.ZValues.Minimum;
            double tmpxfact = src.XValues.Range / (double)gridsize;
            double tmpzfact = src.ZValues.Range / (double)gridsize;
            double tmpx, tmpz, tmpy;
            int    iindex;

            dst.BeginUpdate();
            try
            {
                dst.Clear();
                dst.IrregularGrid = true;
                dst.NumXValues    = gridsize;
                dst.NumZValues    = gridsize;

                // loop all grid cells
                for (int x = 1; x <= dst.NumXValues; x++)
                {
                    tmpx = tmpminx + (x - 1) * tmpxfact;
                    for (int z = 1; z <= dst.NumZValues; z++)
                    {
                        tmpz   = tmpminz + (z - 1) * tmpzfact;
                        tmpy   = ClosestValue(src, tmpx, tmpz);
                        iindex = dst[x, z];
                        if (iindex != -1)
                        {
                            dst.YValues.Value[iindex] = tmpy;
                            dst.XValues.Value[iindex] = tmpx;
                            dst.ZValues.Value[iindex] = tmpz;
                        }
                        else
                        {
                            dst[x, z] = dst.Add(tmpx, tmpy, tmpz);
                        }
                    }
                }
            }
            finally
            {
                dst.EndUpdate();
            }
        }