コード例 #1
0
ファイル: DrawForm.cs プロジェクト: LilyNovikova/CompGraphics
        private void DrawGrid(Rectangle rect, Graphics g)
        {
            if (startSurfaceGrid.Count == 0)
            {
                surface = new BezierSurface();
                surface.SetPoints(startPoints);
                startSurfaceGrid  = surface.GetSurfaceGridPoints(tolerance, rows, columns);
                surfaceGridPoints = null;
                startSurfaceCells.Clear();
                surfaceCells = null;
            }
            var drawGridPoints = Point3Utils.GetObjectProjection(surfaceGridPoints ?? startSurfaceGrid, rect.Width, rect.Height);

            g.DrawGrid(Pens.Black, drawGridPoints);
        }
コード例 #2
0
ファイル: DrawForm.cs プロジェクト: LilyNovikova/CompGraphics
        private void Canvas_Paint(object sender, PaintEventArgs e)
        {
            var rect = new Rectangle(Canvas.Location.X, Canvas.Location.Y, Canvas.Size.Width, Canvas.Size.Height);

            DrawXYAxes(e.Graphics, rect);
            var points = Point3Utils.GetCurveProjection(window.Points, Canvas.Size.Width, Canvas.Size.Height, isIsometric: false).ToArray();

            e.Graphics.DrawPolygon(Pens.Black, points);
            e.Graphics.DrawPoints(Brushes.Black, points, pointRadius);
            e.Graphics.DrawSections(Pens.Red, sections, Canvas.Size.Width, Canvas.Size.Height, isIsometric: false);

            if (isVisibleHighlighted)
            {
                HighlightVisible(e.Graphics, rect);
            }
        }
コード例 #3
0
ファイル: DrawForm.cs プロジェクト: LilyNovikova/CompGraphics
        private void Canvas_Paint(object sender, PaintEventArgs e)
        {
            var rect = new Rectangle(Canvas.Location.X, Canvas.Location.Y, Canvas.Size.Width, Canvas.Size.Height);

            DrawXYZAxes(e.Graphics, rect);
            var basePointsArray = points.Select(row => row.Select(point => point.GetDrawingPoint(rect.Width, rect.Height)).ToArray()).ToArray();

            e.Graphics.DrawPoints(Brushes.Black, basePointsArray, pointRadius);

            if (startSurfaceGrid.Count == 0)
            {
                surface = new BezierSurface();
                surface.SetPoints(startPoints);
                startSurfaceGrid  = surface.GetSurfaceGridPoints(tolerance, rows, columns);
                surfaceGridPoints = null;
            }
            var drawPoints = Point3Utils.GetObjectProjection(surfaceGridPoints ?? startSurfaceGrid, rect.Width, rect.Height);

            e.Graphics.DrawGrid(Pens.Red, drawPoints);
        }
コード例 #4
0
ファイル: DrawForm.cs プロジェクト: LilyNovikova/CompGraphics
        private void DrawCells(Rectangle rect, Graphics g)
        {
            var innerBrush = Brushes.Cyan;
            var outerBrush = Brushes.DarkOrchid;

            if (startSurfaceCells.Count == 0)
            {
                surface = new BezierSurface();
                surface.SetPoints(startPoints);
                startSurfaceCells = surface.GetSurfaceCells(tolerance, rows, columns);
                surfaceCells      = null;
            }
            var check   = startSurfaceCells;
            var ordered = (surfaceCells ?? startSurfaceCells).OrderByDescending(cell => cell.FurthestDistance);

            foreach (SurfaceCell cell in ordered)
            {
                var drawPoints = Point3Utils.GetCurveProjection(cell.ToList(), rect.Width, rect.Height).ToArray();
                g.FillPolygon(cell.IsFront ? outerBrush : innerBrush, drawPoints);
            }
        }