private void ViewProjection() { viewRotate = true; _drawTheFirst(); _projectionTransform = () => { var coll = (IEnumerable <IFacet>)_resultTransformationFacets.DeepClone(); var rotate = _transformation.GetRotateFacets(coll, FiView, Teta, 0); foreach (var item in rotate) { var arrises = item.ArristCollection.ToList(); item.FaceColor = IsBulb ? _lightFace.RgbLigth(MainColor, item, new List <double> { LightViewVector[1], -LightViewVector[0], -LightViewVector[2] }, Ro > 0 && LightViewVector[2] > 0) : MainColor; } var resColl = _transformation.ViewTransformation(rotate, 0, 0, Ro, Distance); var roberts = new RobertsAlgorithm(); var res = roberts.HideLines(resColl, new Vertex(1000, 0, 0, Ro > 0 ? -Math.Abs(LightViewVector[2]) : Math.Abs(LightViewVector[2]))) .ToList(); var resultFacet = res.Where(x => x.IsHidden != true).ToObservableCollection(); var uiCollection = new ObservableCollection <UIElement>(); foreach (var item in resultFacet) { var arrises = item.ArristCollection.ToList(); var listPoint = arrises.Select(arris => new Point(arris.FirstVertex.X + CenterX, arris.FirstVertex.Y + CenterY)).ToList(); var detailPath = new Path { Fill = item.FaceColor, Stroke = item.FaceColor, Data = new CombinedGeometry(new PathGeometry(new [] { new PathFigure(listPoint[listPoint.Count - 1], new [] { new PolyLineSegment(listPoint, false) }, true) }), null) }; uiCollection.Add(detailPath); } UiElementsCollection = uiCollection; }; _projectionTransform(); }