private static bool checkOfCoverageOfControlPoint(Gene gene, ControlPointInst point) { double F = Math.Pow(point.X1 - gene.OX, 2) + Math.Pow(point.Y1 - gene.OY, 2); if (F <= Math.Pow(gene.Radius, 2)) { return(true); } return(false); }
/*Метод проверки вхождения точек в область окружноти*/ private static bool checkOfCoverageOfControlPoint(List <Gene> genes, ControlPointInst point) { for (int i = 0; i < genes.Count; i++) { double F = Math.Pow(point.X1 - genes.ElementAt(i).OX, 2) + Math.Pow(point.Y1 - genes.ElementAt(i).OY, 2); if (F <= Math.Pow(genes.ElementAt(i).Radius, 2)) { genes.RemoveAt(i); return(true); } } return(false); }
private void InitializeAllObjects() { SchemeOfBuilding scheme = null; try { scheme = _Context.Schemes.Where(c => c.ProjectNumber.ProjectId.Equals(_projectId)).First(); } catch { MessageBox.Show("Ошибка загрузки данных из базы данных"); } List <Room> rooms = null; if (scheme.Rooms != null) { if (scheme.Rooms.Count() > 0) { rooms = scheme.Rooms; foreach (Room room in rooms) { int coord_X1 = room.Coord_X1; int coord_Y1 = room.Coord_Y1; int coord_X2 = room.Coord_X2; int coord_Y2 = room.Coord_Y2; int coord_X3 = room.Coord_X3; int coord_Y3 = room.Coord_Y3; int coord_X4 = room.Coord_X4; int coord_Y4 = room.Coord_Y4; Line lin = new Line { Stroke = color, StrokeThickness = SIZE, X1 = coord_X1, Y1 = coord_Y1, X2 = coord_X2, Y2 = coord_Y2, StrokeStartLineCap = PenLineCap.Round, StrokeEndLineCap = PenLineCap.Round }; Line lin2 = new Line { Stroke = color, StrokeThickness = SIZE, X1 = coord_X1, Y1 = coord_Y1, X2 = coord_X3, Y2 = coord_Y3, StrokeStartLineCap = PenLineCap.Round, StrokeEndLineCap = PenLineCap.Round }; Line lin3 = new Line { Stroke = color, StrokeThickness = SIZE, X1 = coord_X3, Y1 = coord_Y3, X2 = coord_X4, Y2 = coord_Y4, StrokeStartLineCap = PenLineCap.Round, StrokeEndLineCap = PenLineCap.Round }; Line lin4 = new Line { Stroke = color, StrokeThickness = SIZE, X1 = coord_X2, Y1 = coord_Y2, X2 = coord_X4, Y2 = coord_Y4, StrokeStartLineCap = PenLineCap.Round, StrokeEndLineCap = PenLineCap.Round }; CanvasAreaForSchemeOfRoom.Children.Add(lin); CanvasAreaForSchemeOfRoom.Children.Add(lin2); CanvasAreaForSchemeOfRoom.Children.Add(lin3); CanvasAreaForSchemeOfRoom.Children.Add(lin4); RectangleRoom rectRoom = new RectangleRoom(); rectRoom.X1 = room.Coord_X1; rectRoom.Y1 = room.Coord_Y1; rectRoom.X2 = room.Coord_X2; rectRoom.Y2 = room.Coord_Y2; rectRoom.X3 = room.Coord_X3; rectRoom.Y3 = room.Coord_Y3; rectRoom.X4 = room.Coord_X4; rectRoom.Y4 = room.Coord_Y4; SingleSpaceParams.getInstance().Rooms.Add(rectRoom); } } } if (scheme.Point != null) { List <ControlPoint> points = null; if (scheme.Point.Count > 0) { points = scheme.Point; foreach (ControlPoint point in points) { pointLine = new Line { Stroke = new SolidColorBrush { Color = Colors.Red, }, StrokeThickness = 10, X1 = point.Coord_X, Y1 = point.Coord_Y, X2 = point.Coord_X + 1, Y2 = point.Coord_Y + 1, StrokeStartLineCap = PenLineCap.Round, StrokeEndLineCap = PenLineCap.Round, }; CanvasAreaForSchemeOfRoom.Children.Add(pointLine); ControlPointInst controlPoint = new ControlPointInst( Convert.ToInt32(point.Coord_X), Convert.ToInt32(point.Coord_Y)); SingleSpaceParams.getInstance().ControlPoints.Add(controlPoint); } } } if (scheme.Positions != null) { try { List <InstallationPosition> positions = scheme.Positions; foreach (InstallationPosition pos in positions) { PlacmentOfModules placement = pos.Placment.First(); ModelsOfModules model = _Context.Models.Where(mod => mod.ModuleId == placement.ModelId).First(); EllipseGeometry el = new EllipseGeometry { Center = new Point(pos.Coord_X, pos.Coord_Y), RadiusX = double.Parse(model.ModelRadius), RadiusY = double.Parse(model.ModelRadius) }; Path path = new Path(); path.Data = el; path.StrokeThickness = 2; path.Opacity = 0.5; path.Fill = new SolidColorBrush { Color = Colors.LightBlue, Opacity = 0.7 }; path.Stroke = new SolidColorBrush { Color = Colors.Red }; CanvasAreaForSchemeOfRoom.Children.Add(path); } } catch { MessageBox.Show("Ошибка загрузки данных из базы данных"); } } _Models = _Context.Models.ToList(); }
private void Window_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (_IsRoom) { widthRoomTextBlock.Visibility = Visibility.Collapsed; widthRoomTextBox.Visibility = Visibility.Collapsed; lengthRoomTextBlock.Visibility = Visibility.Collapsed; lengthRoomTextBox.Visibility = Visibility.Collapsed; setLengthAndWidthButton.Visibility = Visibility.Collapsed; if (line != null && line2 != null) { RectangleRoom room = new RectangleRoom { X1 = Convert.ToInt32(line.X1), Y1 = Convert.ToInt32(line.Y1), X2 = Convert.ToInt32(line.X2), Y2 = Convert.ToInt32(line.Y2), X3 = Convert.ToInt32(line2.X2), Y3 = Convert.ToInt32(line2.Y2), X4 = Convert.ToInt32(line4.X2), Y4 = Convert.ToInt32(line4.Y2) }; // SingleSpaceParams.getInstance().Rooms.Add(room); } line = null; line2 = null; line3 = null; line4 = null; isPaint = false; } if (_IsPoint) { var point = Mouse.GetPosition(CanvasAreaForSchemeOfRoom); pointLine = new Line { Stroke = new SolidColorBrush { Color = Colors.Red, }, StrokeThickness = 10, X1 = point.X, Y1 = point.Y, X2 = point.X + 1, Y2 = point.Y + 1, StrokeStartLineCap = PenLineCap.Round, StrokeEndLineCap = PenLineCap.Round, }; ControlPointInst controlPoint = new ControlPointInst( Convert.ToInt32(pointLine.X1), Convert.ToInt32(pointLine.Y1)); SingleSpaceParams.getInstance().ControlPoints.Add(controlPoint); CanvasAreaForSchemeOfRoom.Children.Add(pointLine); } }