示例#1
0
        private async Task <NeuronLevel> Define(Diagrams.Polygon front)
        {
            var frontPoints = front.ToPoints();

            // Initial hull
            var dispatcher = Dispatcher.CurrentDispatcher;
            var logger     = new DispatcherLogger(dispatcher, s => this.viewModel.Info = s);

            var hullSegments = await Bus.Query(new MakeConvexHull(frontPoints, dispatcher, logger));

            var hull = new Diagrams.Polygon(hullSegments);

            var level = new NeuronLevel {
                Include = hull
            };

            // Make sub hulls: hull - front
            var diffs = Diagrams.PolygonOperations.Difference(hull, front);

            foreach (var diff in diffs)
            {
                var l = await this.Define(diff);

                level.Excludes.Add(l);
            }

            return(level);
        }
示例#2
0
        private async Task DrawLevel(NeuronLevel level, IShapeComposite composite)
        {
            // Draw outer hull
            await Bus.Send(new DrawPolygon(Brushes.DodgerBlue, level.Include, composite));

            // Draw cut outs
            foreach (var cutOut in level.Excludes)
            {
                await this.DrawLevel(cutOut, composite);
            }
        }