Пример #1
0
        /// <summary>
        /// Fill z-bufer
        /// </summary>
        /// <param name="borderPoints">Border points</param>
        private void Fill(List <Point> borderPoints)
        {
            while (borderPoints.Count > 0)
            {
                Point curent       = borderPoints[0];
                var   inlinePoints = borderPoints.FindAll((p) => p.rY == curent.rY);

                inlinePoints.Sort((p1, p2) =>
                {
                    if (p1.rX < p2.rX)
                    {
                        return(-1);
                    }
                    if (p1.rX > p2.rX)
                    {
                        return(1);
                    }
                    return(0);
                });

                var brezenhem = new BresenhamApproximation(inlinePoints.First(), inlinePoints.Last());

                foreach (var p in brezenhem)
                {
                    var dep = CalculateDepth(p);

                    context.Zbufer.Add(p, dep, color);
                    // --FILL--
                    //context.DrawPoint(p);
                }

                borderPoints.RemoveAll((p) => inlinePoints.Contains(p));
            }
        }
Пример #2
0
        /// <summary>
        /// Return list rasterization poin of line
        /// </summary>
        /// <returns>Point list</returns>
        public List <Point> Rasterization()
        {
            if (!valid)
            {
                var brezenhem = new BresenhamApproximation(p1, p2);

                raster.Clear();

                foreach (var p in brezenhem)
                {
                    raster.Add(p);
                }

                valid = true;
            }

            return(raster);
        }