public DrawForm() { InitializeComponent(); inputFileCmb.SelectedItem = inputFileCmb.Items[1]; SetPoints(); coordinates = new Coordinates3D(Canvas.Size.Width, Canvas.Size.Height); surface = new BezierSurface(); startSurfaceGrid = new List <List <Point3> >(); surface.SetPoints(points); SavePoints(pointsFilename); startSurfaceGrid.Clear(); }
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); }
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); }
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); } }