Пример #1
0
        /// <summary>
        /// Generate a Voronoi Diagram from the generated points
        /// </summary>
        private void GenerateVoronoi()
        {
            //check if there are enough points
            if (_points == null || _points.Count <= 2 || _voronoiDiagram.Triangulation == null)
            {
                Console.WriteLine("No points available!");
                GeneratePoints(PointsToGenerate);
                //return;
            }

            _baseColor = Extensions.Extensions.RandomColor();

            _voronoiSettings.VoronoiAlgorithm = VoronoiAlgorithm;

            //create voronoi using specified algorithm
            var timer = Stopwatch.StartNew();

            _voronoiDiagram = VoronoiGenerator.CreateVoronoi(_points, _voronoiSettings);
            timer.Stop();

            if (_voronoiDiagram == null)
            {
                return;
            }

            //update info
            var time = timer.ElapsedMilliseconds / 1000.0;

            GenerationTimeText = $"For {_points.Count} points using {VoronoiAlgorithm.ToString()}: {time} seconds.";

            //Update canvas
            RefreshCanvas();
        }
Пример #2
0
        private void GenerateCity()
        {
            //seed random
            if (!GenerationSettings.UseSeed)
            {
                GenerationSettings.Seed = DateTime.Now.GetHashCode();
            }
            //Store Settings
            var width  = GenerationSettings.Width;
            var length = GenerationSettings.Length;

            //Parent.transform.position = citypos;
            GenerationSettings.StartX = Parent.transform.position.x - width / 2.0;
            GenerationSettings.StartY = Parent.transform.position.z - length / 2.0;

            //Generate Points and diagram
            var points = PointGenerator.Generate(GenerationSettings);

            VoronoiDiagram = VoronoiGenerator.CreateVoronoi(points, GenerationSettings);

            //generate city districts and roads
            _cityData = CityBuilder.GenerateCity(CitySettings, VoronoiDiagram);
        }