Пример #1
0
    virtual protected void init()
    {
        Debug.Log("init");

        if (noise_set != null)
        {
            noise_gen = new NoiseGen1(noise_set);
        }

        mesh_renderer = gameObject.GetComponent <MeshRenderer>();
        if (mesh_renderer == null)
        {
            mesh_renderer = gameObject.AddComponent <MeshRenderer>();
            if (col_set.mat == null)
            {
                mesh_renderer.sharedMaterial = new Material(Shader.Find("Standard"));
            }
            else
            {
                mesh_renderer.sharedMaterial = col_set.mat;
            }
        }

        mesh_filter = gameObject.GetComponent <MeshFilter>();
        if (mesh_filter == null)
        {
            mesh_filter = gameObject.AddComponent <MeshFilter>();
        }

        mesh_filter.mesh = new Mesh();
    }
        private void UpdateDisplay()
        {
            switch (this.cbType.SelectedIndex)
            {
            case 0:
            {
                this._noiseGen = this._perlinNoise;
                break;
            }

            case 1:
            {
                this._noiseGen = this._kochLikeNoise;
                break;
            }

            default:
            {
                this._noiseGen = null;
                break;
            }
            }
            if (this._noiseGen == null)
            {
                this.propertyGrid1.SelectedObject = null;
            }
            else
            {
                this.propertyGrid1.SelectedObject = this._noiseGen.Settings;
            }
        }
Пример #3
0
 public TreeFeaturePlacer(
     INoiseGenerator noiseGenerator, [Inject(Id = "Feature Container")] Transform featureContainer,
     IFeatureConfig config
     ) : base(noiseGenerator, featureContainer)
 {
     Config = config;
 }
        /// <summary>
        /// Initialises a new instance of the CompoundNoiseGenerator class.
        /// </summary>
        /// <param name="baseGenerator">The base noise generator.</param>
        /// <param name="seed">The seed value.</param>
        /// <param name="octaves">The number of octaves.</param>
        /// <param name="baseFrequency">The base frequency which is the frequency of the lowest octave.</param>
        /// <param name="persistence">The persistence value, which determines the amplitude for each octave.</param>
        public CompoundNoiseGenerator(
            INoiseGenerator baseGenerator,
            int seed,
            byte octaves,
            float baseFrequency,
            float persistence)
        {
            this.baseGenerator = baseGenerator;
            this.octaves = octaves;

            // Generate the seed for each octave's noise function
            var random = new Random(seed);
            this.seeds = new Dictionary<byte, int>(this.octaves);
            for (byte i = 0; i < this.octaves; i++)
            {
                this.seeds[i] = random.Next();
            }

            // Pre-calculate the frequency for each octave
            this.frequencies = new Dictionary<byte, float>(this.octaves);
            for (byte i = 0; i < this.octaves; i++)
            {
                this.frequencies[i] = (float)Math.Pow(2, i) * baseFrequency;
            }

            // Pre-calculate the amplitude for each octave
            this.amplitudes = new Dictionary<byte, float>(this.octaves);
            for (byte i = 0; i < this.octaves; i++)
            {
                this.amplitudes[i] = (float)Math.Pow(persistence, i);
            }
        }
 public FeaturePlacerBase(
     INoiseGenerator noiseGenerator, [Inject(Id = "Feature Container")] Transform featureContainer
     )
 {
     NoiseGenerator   = noiseGenerator;
     FeatureContainer = featureContainer;
 }
Пример #6
0
    virtual public void updateFromParent(INoiseGenerator ng, ChunkSettings cs, Vector3 pos)
    {
        chunk_set          = cs;
        transform.position = pos;
        noise_gen          = ng;

        updateMesh();
    }
Пример #7
0
        public TerrainGenerator(int seed, IEnvironmentGenerator[] environmentGenerators, INoiseGenerator surfaceGenerator, INoiseGenerator biomeGenerator)
        {
            objectLock = new object();

            this.environmentGenerators = environmentGenerators;
            this.surfaceGenerator      = surfaceGenerator;
            this.biomeGenerator        = biomeGenerator;
        }
Пример #8
0
 public CityFeaturePlacer(
     INoiseGenerator noiseGenerator, [Inject(Id = "Feature Container")] Transform featureContainer,
     IFeatureConfig config, IPossessionRelationship <IHexCell, ICity> cityLocationCanon
     ) : base(noiseGenerator, featureContainer)
 {
     Config            = config;
     CityLocationCanon = cityLocationCanon;
 }
 public bool AddGeneratorToLoadedGenerators(INoiseGenerator generator)
 {
     if(mLoadedGenerators.ContainsKey(generator.Name))
     {
         return false;
     }
     mLoadedGenerators.Add(generator.Name, generator);
     return true;
 }
Пример #10
0
        public HybridMultiFractal(INoiseGenerator noise, double octaves, double lacunarity, double h = 0.25, double offset = 0.7)
        {
            _lacunarity = lacunarity;
            _octaves    = octaves;
            _offset     = offset;
            _noise      = noise;

            _exponentArray = InitializeExponentArray(octaves, lacunarity, h);
        }
Пример #11
0
 public HillsHeightmapLogic(
     IMapRenderConfig renderConfig, INoiseGenerator noiseGenerator,
     IFlatlandsHeightmapLogic flatlandsHeightmapLogic
     )
 {
     RenderConfig            = renderConfig;
     NoiseGenerator          = noiseGenerator;
     FlatlandsHeightmapLogic = flatlandsHeightmapLogic;
 }
Пример #12
0
        public EncampmentFeaturePlacer(
            INoiseGenerator noiseGenerator, [Inject(Id = "Feature Container")] Transform featureContainer,
            IFeatureConfig config, IEncampmentLocationCanon encampmentLocationCanon

            ) : base(noiseGenerator, featureContainer)
        {
            Config = config;
            EncampmentLocationCanon = encampmentLocationCanon;
        }
 public RidgedMultiFractal(INoiseGenerator baseBaseNoise, int octaves, double lacunarity, double H = 1.0, double offset = 1.0, double gain = 2.0)
 {
     _gain = gain;
     _offset = offset;
     _lacunarity = lacunarity;
     _octaves = octaves;
     _baseNoise = baseBaseNoise;
     _exponentArray = InitializeExponentArray(octaves, lacunarity, H);
 }
 public RidgedMultiFractal(INoiseGenerator baseBaseNoise, int octaves, double lacunarity, double H = 1.0, double offset = 1.0, double gain = 2.0)
 {
     _gain          = gain;
     _offset        = offset;
     _lacunarity    = lacunarity;
     _octaves       = octaves;
     _baseNoise     = baseBaseNoise;
     _exponentArray = InitializeExponentArray(octaves, lacunarity, H);
 }
Пример #15
0
    // Use this for initialization
    void Awake()
    {
        var generator = new FastNoise();

        generator.SetFrequency(noiseFrequency);
        generator.SetFractalOctaves(4);
        generator.SetNoiseType(FastNoise.NoiseType.PerlinFractal);
        noiseGenerator = generator;
    }
        public HybridMultiFractal(INoiseGenerator noise, double octaves, double lacunarity, double h = 0.25, double offset = 0.7)
        {
            _lacunarity = lacunarity;
            _octaves = octaves;
            _offset = offset;
            _noise = noise;

            _exponentArray = InitializeExponentArray(octaves, lacunarity, h);
        }
        public void UpdateSettings(ColorSettings settings)
        {
            this.settings       = settings;
            biomeNoiseGenerator = NoiseGeneratorFactory.CreateNoiseGenerator(settings.biomeColorSettings.noise);

            if (texture == null || texture.height != NumBiomes)
            {
                texture = new Texture2D(NumberColors * 2, NumBiomes * 2 - 2, TextureFormat.RGBA32, false);
            }
        }
Пример #18
0
    static float SampleHeight(int x, int y, INoiseGenerator generator)
    {
        //This creates the noise used for the ground.
        //The last value (8.0f) is the amp that defines (roughly) the maximum
        //and minimum vaule the ground varies from the surface level
        //return perlin.FractalNoise3D(pos.x, pos.y, pos.z, 4, 80.0f, 8.0f);
        var noise = generator.GetNoise(x, y);

        return((1.0f + noise) * 0.3f);
    }
 public void Generate(string[] s)
 {
     if(MainConsole.Instance.ConsoleScene == null)
     {
         MainConsole.Instance.Output("Select a scene first");
         return;
     }
     //string noiseGen = MainConsole.Instance.CmdPrompt("Noise generator (Perlin or Kosh)", "Perlin", new List<string>(new [] { "Perlin", "Kosh" }));
     //if(noiseGen == "Perlin")
     {
         _noiseGen = m_perlinNoise;
         PerlinNoiseSettings pns = new PerlinNoiseSettings();
         pns.ResultX = MainConsole.Instance.ConsoleScene.RegionInfo.RegionSizeX;
         pns.ResultY = MainConsole.Instance.ConsoleScene.RegionInfo.RegionSizeY;
         pns.RandomSeed = int.Parse(MainConsole.Instance.Prompt("Random Seed (0-infinity)", "10"));
         pns.CorsenessX = int.Parse(MainConsole.Instance.Prompt("Corseness (X direction) (2-1000)", "100"));
         pns.CorsenessY = int.Parse(MainConsole.Instance.Prompt("Corseness (Y direction) (2-1000)", "100"));
         pns.FlatEdges = MainConsole.Instance.Prompt("Flat Edges (recommended)", "true", new List<string>(new[] { "true", "false" })) == "true";
         pns.Octaves = int.Parse(MainConsole.Instance.Prompt("Octaves (0-infinity)", "5"));
         pns.Persistence = float.Parse(MainConsole.Instance.Prompt("Persistence", "0.8"));
         _noiseGen.Settings = pns;
     }
     /*else
     {
         _noiseGen = m_kochLikeNoise;
         KochLikeNoiseSettings kns = new KochLikeNoiseSettings();
         kns.ResultX = MainConsole.Instance.Prompt.RegionInfo.RegionSizeX;
         kns.ResultY = MainConsole.Instance.Prompt.RegionInfo.RegionSizeY;
         kns.H = double.Parse(MainConsole.Instance.Prompt("H", "1.0"));
         kns.InitalGridX = int.Parse(MainConsole.Instance.Prompt("Initial Grid X", "2"));
         if(kns.InitalGridX < 2)
             kns.InitalGridX = 2;
         kns.InitalGridY = int.Parse(MainConsole.Instance.Prompt("Initial Grid Y", "2"));
         if(kns.InitalGridY < 2)
             kns.InitalGridY = 2;
         kns.RandomMin = int.Parse(MainConsole.Instance.Prompt("Random Min", "-1"));
         kns.RandomMax = int.Parse(MainConsole.Instance.Prompt("Random Max", "1"));
         kns.RandomSeed = int.Parse(MainConsole.Instance.Prompt("Random Seed", "0"));
         kns.Scale = double.Parse(MainConsole.Instance.Prompt("Scale", "1.0"));
         _noiseGen.Settings = kns;
     }*/
     float scaling = float.Parse(MainConsole.Instance.Prompt("Fractal Scaling", "50"));
     float[,] land = _noiseGen.Generate();
     ITerrainChannel c = new TerrainChannel(MainConsole.Instance.ConsoleScene);
     for(int x = 0; x < MainConsole.Instance.ConsoleScene.RegionInfo.RegionSizeX; x++)
     {
         for(int y = 0; y < MainConsole.Instance.ConsoleScene.RegionInfo.RegionSizeY; y++)
         {
             c[x, y] = (land[x, y] * scaling) + (float)MainConsole.Instance.ConsoleScene.RegionInfo.RegionSettings.WaterHeight + 10;
         }
     }
     MainConsole.Instance.ConsoleScene.RequestModuleInterface<ITerrainModule>().TerrainMap = c;
     MainConsole.Instance.ConsoleScene.RequestModuleInterface<ITerrainModule>().TaintTerrain();
     MainConsole.Instance.ConsoleScene.RegisterModuleInterface<ITerrainChannel>(c);
 }
 public void InjectDependencies(
     INoiseGenerator noiseGenerator, IFeatureLocationLogic featureLocationLogic,
     List <IFeaturePlacer> featurePlacers,
     [InjectOptional(Id = "Feature Container")] Transform featureContainer
     )
 {
     NoiseGenerator       = noiseGenerator;
     FeatureLocationLogic = featureLocationLogic;
     FeaturePlacers       = featurePlacers;
     FeatureContainer     = featureContainer;
 }
Пример #21
0
        public ResourceFeaturePlacer(
            INoiseGenerator noiseGenerator, [Inject(Id = "Feature Container")] Transform featureContainer,
            IFeatureConfig config, IPossessionRelationship <IHexCell, IResourceNode> resourceNodeLocationCanon,
            IVisibilityCanon visibilityCanon

            ) : base(noiseGenerator, featureContainer)
        {
            Config = config;
            ResourceNodeLocationCanon = resourceNodeLocationCanon;
            VisibilityCanon           = visibilityCanon;
        }
Пример #22
0
    virtual public void createdByParent(INoiseGenerator ng, ChunkSettings cs, Vector3 pos)
    {
        Debug.Log("created by parent");
        //noise_set = ns;
        chunk_set  = cs;
        has_parent = true;
        noise_gen  = ng;

        init();
        updateMesh();
        transform.position = pos;
    }
Пример #23
0
        public void Generate(IScene scene, string[] s)
        {
            //string noiseGen = MainConsole.Instance.CmdPrompt("Noise generator (Perlin or Kosh)", "Perlin", new List<string>(new [] { "Perlin", "Kosh" }));
            //if(noiseGen == "Perlin")
            {
                _noiseGen = m_perlinNoise;
                PerlinNoiseSettings pns = new PerlinNoiseSettings();
                pns.ResultX        = scene.RegionInfo.RegionSizeX;
                pns.ResultY        = scene.RegionInfo.RegionSizeY;
                pns.RandomSeed     = int.Parse(MainConsole.Instance.Prompt("Random Seed (0-infinity)", "10"));
                pns.CorsenessX     = int.Parse(MainConsole.Instance.Prompt("Corseness (X direction) (2-1000)", "100"));
                pns.CorsenessY     = int.Parse(MainConsole.Instance.Prompt("Corseness (Y direction) (2-1000)", "100"));
                pns.FlatEdges      = MainConsole.Instance.Prompt("Flat Edges (recommended)", "true", new List <string>(new[] { "true", "false" })) == "true";
                pns.Octaves        = int.Parse(MainConsole.Instance.Prompt("Octaves (0-infinity)", "5"));
                pns.Persistence    = float.Parse(MainConsole.Instance.Prompt("Persistence", "0.8"));
                _noiseGen.Settings = pns;
            }

            /*else
             * {
             *  _noiseGen = m_kochLikeNoise;
             *  KochLikeNoiseSettings kns = new KochLikeNoiseSettings();
             *  kns.ResultX = MainConsole.Instance.Prompt.RegionInfo.RegionSizeX;
             *  kns.ResultY = MainConsole.Instance.Prompt.RegionInfo.RegionSizeY;
             *  kns.H = double.Parse(MainConsole.Instance.Prompt("H", "1.0"));
             *  kns.InitalGridX = int.Parse(MainConsole.Instance.Prompt("Initial Grid X", "2"));
             *  if(kns.InitalGridX < 2)
             *      kns.InitalGridX = 2;
             *  kns.InitalGridY = int.Parse(MainConsole.Instance.Prompt("Initial Grid Y", "2"));
             *  if(kns.InitalGridY < 2)
             *      kns.InitalGridY = 2;
             *  kns.RandomMin = int.Parse(MainConsole.Instance.Prompt("Random Min", "-1"));
             *  kns.RandomMax = int.Parse(MainConsole.Instance.Prompt("Random Max", "1"));
             *  kns.RandomSeed = int.Parse(MainConsole.Instance.Prompt("Random Seed", "0"));
             *  kns.Scale = double.Parse(MainConsole.Instance.Prompt("Scale", "1.0"));
             *  _noiseGen.Settings = kns;
             * }*/
            float scaling = float.Parse(MainConsole.Instance.Prompt("Fractal Scaling", "50"));

            float[,] land = _noiseGen.Generate();
            ITerrainChannel c = new TerrainChannel(scene);

            for (int x = 0; x < scene.RegionInfo.RegionSizeX; x++)
            {
                for (int y = 0; y < scene.RegionInfo.RegionSizeY; y++)
                {
                    c[x, y] = (land[x, y] * scaling) + (float)scene.RegionInfo.RegionSettings.WaterHeight + 10;
                }
            }
            scene.RequestModuleInterface <ITerrainModule>().TerrainMap = c;
            scene.RequestModuleInterface <ITerrainModule>().TaintTerrain();
            scene.RegisterModuleInterface <ITerrainChannel>(c);
        }
Пример #24
0
 /// <summary>
 /// Initializes a new instance of the <see cref="OrientationParticleFilter"/> class.
 /// </summary>
 /// <param name="noiseGenerator">See noiseGenerator argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="resampleNoiseSize">See resampleNoiseSize argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="resampler">See resampler argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="particleGenerator">See particleGenerator argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="particleAmount">See particleAmount argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="smoother">See smoother argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 public OrientationParticleFilter(INoiseGenerator noiseGenerator, float resampleNoiseSize, IResampler resampler, IParticleGenerator particleGenerator, int particleAmount, ISmoother smoother)
     : base(
         resampler,
         noiseGenerator,
         new CircularParticleController(particleGenerator, particleAmount),
         new CircularParticleController(particleGenerator, particleAmount),
         new CircularParticleController(particleGenerator, particleAmount),
         resampleNoiseSize,
         smoother,
         AngleMath.Average)
 {
     this.orientationSources = new List <IOrientationSource>();
 }
            public ImplicitChunkHeightMap(Bounds2D bounds, int columns, int rows, INoiseGenerator noiseGenerator)
            {
                _noiseGenerator = noiseGenerator;
                _rows           = rows;
                _columns        = columns;
                _bounds         = bounds;

                var origin   = CalculatePosition(0, 0);
                var position = CalculatePosition(1, 1);

                _dx = 1 / (position.X - origin.X);
                _dy = 1 / (position.Y - origin.Y);
            }
        /// <summary>
        /// Initialises a new instance of the TerrainPointGenerator class.
        /// </summary>
        /// <param name="baseGenerator">The base noise generator.</param>
        /// <param name="seed">The seed value for the terrain.</param>
        /// <param name="octaves">The number of octaves of noise used by the terrain generator.</param>
        /// <param name="baseFrequency">The base frequency which is the frequency of the lowest octave used by the
        /// terrain generator.</param>
        /// <param name="persistence">The persistence value, which determines the amplitude for each octave used by the
        /// terrain generator.</param>
        public TerrainPointGenerator(
            INoiseGenerator baseGenerator,
            int seed,
            int octaves,
            float baseFrequency,
            float persistence)
        {
            this.baseGenerator = baseGenerator;
            this.surfaceGenerator =
                new CompoundNoiseGenerator(this.baseGenerator, seed, (byte)octaves, baseFrequency, persistence);

            // Set the cave attributes
            this.caves = this.CreateCaveAttributes(seed);
        }
Пример #27
0
        public MinimalSphereCoveringAnalyzer(INoiseGenerator noiseGenerator, ILogger <MinimalSphereCoveringAnalyzer> logger)
        {
            if (noiseGenerator == null)
            {
                throw  new ArgumentNullException(nameof(noiseGenerator));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            _noiseGenerator = noiseGenerator;
            _logger         = logger;
        }
Пример #28
0
        public ListsSizesDistributionAnalyzer(INoiseGenerator noiseGenerator, ILogger <ListsSizesDistributionAnalyzer> logger)
        {
            if (noiseGenerator == null)
            {
                throw new ArgumentNullException(nameof(noiseGenerator));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            _noiseGenerator = noiseGenerator;
            _logger         = logger;
        }
    // Not needed for now
    public void GenerateWorld(int size)
    {
        _mapSize = size;

        _allTiles = new MapTile[size][];

        _heightMapGenerator      = CreateHeightMapGenerator();
        _temperatureMapGenerator = CreateTemperatureMapGenerator();
        _moistureMapGenerator    = CreateMoistureMapGenerator();

        _aggregationSelector = new BasicBiomeSelector();

        GenerateTiles(size);
    }
Пример #30
0
 public FarmTriangulator(
     IHexGrid grid, IImprovementLocationCanon improvementLocationCanon, INoiseGenerator noiseGenerator,
     IMapRenderConfig renderConfig, IGeometry2D geometry2D, ICellEdgeContourCanon cellContourCanon,
     IRiverCanon riverCanon, MapRenderingSignals mapRenderingSignals
     )
 {
     Grid = grid;
     ImprovementLocationCanon = improvementLocationCanon;
     NoiseGenerator           = noiseGenerator;
     RenderConfig             = renderConfig;
     Geometry2D          = geometry2D;
     CellContourCanon    = cellContourCanon;
     RiverCanon          = riverCanon;
     MapRenderingSignals = mapRenderingSignals;
 }
 public RiverTriangulator(
     IMapRenderConfig renderConfig, IRiverSplineBuilder riverSplineBuilder,
     INoiseGenerator noiseGenerator, ICellEdgeContourCanon cellEdgeContourCanon,
     INonRiverContourBuilder nonRiverContourBuilder, IHexGrid grid,
     IRiverContourRationalizer riverContourCuller
     )
 {
     RenderConfig           = renderConfig;
     RiverSplineBuilder     = riverSplineBuilder;
     NoiseGenerator         = noiseGenerator;
     CellEdgeContourCanon   = cellEdgeContourCanon;
     NonRiverContourBuilder = nonRiverContourBuilder;
     Grid = grid;
     RiverContourRationalizer = riverContourCuller;
 }
Пример #32
0
 protected static DecodingTestCase PrepareDecodingTestCase(
     ICode code,
     INoiseGenerator noiseGenerator,
     int?errorsCount = null,
     IEnumerable <int> informationWord = null) =>
 new DecodingTestCase
 {
     Code            = code,
     InformationWord = informationWord?.Select(x => code.Field.CreateElement(x)).ToArray()
                       ?? Enumerable.Repeat(code.Field.Zero(), code.InformationWordLength).ToArray(),
     AdditiveNoise = noiseGenerator
                     .VariatePositionsAndValues(code.Field, code.CodewordLength, errorsCount ?? (code.CodeDistance - 1) / 2)
                     .Skip(30)
                     .First()
 };
Пример #33
0
    override protected void init()
    {
        Debug.Log("host init");

        if (chunks == null || chunks.Length == 0)
        {
            Debug.Log("create chunks array");
            chunks = new GameObject[chunk_host_set.length * chunk_host_set.width];
        }

        if (chunks.Length != chunk_host_set.length * chunk_host_set.width)
        {
            Debug.Log("resizing chunk array");
            resizeChunksArr();
        }


        GameObject obj;

        for (int i = 0; i < chunk_host_set.length; i++)
        {
            for (int j = 0; j < chunk_host_set.width; j++)
            {
                obj = getChunkObj(i, j);
                if (obj == null)
                {
                    obj = new GameObject();
                    obj.transform.parent = transform;
                    FlatChunk fc = obj.AddComponent <FlatChunk>();

                    INoiseGenerator ng = getNoiseGen(i, j);

                    fc.createdByParent(ng, chunk_set, getPos(i, j));
                    setChunkObj(i, j, obj);
                }
                else
                {
                    obj.GetComponent <FlatChunk>().createdByParent(
                        getNoiseGen(i, j),
                        chunk_set,
                        Vector3.Scale(getPos(i, j), transform.localScale)
                        );
                }
            }
        }
    }
Пример #34
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AbstractParticleFilter"/> class.
 /// </summary>
 /// <param name="resampler"><see cref="resampler"/></param>
 /// <param name="noiseGenerator"><see cref="noiseGenerator"/></param>
 /// <param name="particleControllerX"><see cref="ParticleControllerX"/></param>
 /// <param name="particleControllerY">The particles for the y dimension</param>
 /// <param name="particleControllerZ">The particles for the z dimension</param>
 /// <param name="resampleNoiseSize"><see cref="resampleNoiseSize"/></param>
 /// <param name="smoother"><see cref="smoother"/></param>
 /// <param name="averageCalculator"><see cref="averageCalculator"/></param>
 protected AbstractParticleFilter(
     IResampler resampler,
     INoiseGenerator noiseGenerator,
     AbstractParticleController particleControllerX,
     AbstractParticleController particleControllerY,
     AbstractParticleController particleControllerZ,
     float resampleNoiseSize,
     ISmoother smoother,
     Func <float[], float> averageCalculator)
 {
     this.resampler           = resampler;
     this.noiseGenerator      = noiseGenerator;
     this.ParticleControllerX = particleControllerX;
     this.ParticleControllerY = particleControllerY;
     this.ParticleControllerZ = particleControllerZ;
     this.resampleNoiseSize   = resampleNoiseSize;
     this.smoother            = smoother;
     this.averageCalculator   = averageCalculator;
     this.CurrentTimeStamp    = -1;
     this.Measurements        = new List <Measurement <Vector3> >();
 }
Пример #35
0
        static Program()
        {
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json")
                                .Build();
            var loggerFactory = new LoggerFactory()
                                .AddSerilog(
                new LoggerConfiguration()
                .ReadFrom.Configuration(configuration)
                .Enrich.FromLogContext()
                .Enrich.WithProperty("Version", Assembly.GetEntryAssembly().GetName().Version.ToString(4))
                .CreateLogger()
                );

            Logger = loggerFactory.CreateLogger <Program>();

            NoiseGenerator = new RecursiveGenerator();
            WordsComparer  = new FieldElementsArraysComparer();

            LinearCodeDistanceAnalyzer     = new LinearCodeDistanceAnalyzer(loggerFactory.CreateLogger <LinearCodeDistanceAnalyzer>());
            MinimalSphereCoveringAnalyzer  = new MinimalSphereCoveringAnalyzer(NoiseGenerator, loggerFactory.CreateLogger <MinimalSphereCoveringAnalyzer>());
            ListsSizesDistributionAnalyzer = new ListsSizesDistributionAnalyzer(NoiseGenerator, loggerFactory.CreateLogger <ListsSizesDistributionAnalyzer>());

            var gaussSolver = new GaussSolver();

            TelemetryCollector = new GsBasedDecoderTelemetryCollectorForGsBasedDecoder();
            FixedDistanceCodesFactory
                = new StandardCodesFactory(
                      new LiftingSchemeBasedBuilder(new GcdBasedBuilder(new RecursiveGcdFinder()), gaussSolver),
                      new RsBasedDecoder(new BerlekampWelchDecoder(gaussSolver), gaussSolver),
                      new GsBasedDecoder(
                          new GsDecoder(new KotterAlgorithmBasedBuilder(new PascalsTriangleBasedCalculator()), new RrFactorizator()),
                          gaussSolver
                          )
            {
                TelemetryCollector = TelemetryCollector
            }
                      );
        }
Пример #36
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PositionParticleFilter"/> class.
 /// </summary>
 /// <param name="noiseGenerator">See noiseGenerator argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="resampleNoiseSize">See resampleNoiseSize argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="resampler">See resampler argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="particleGenerator">See particleGenerator argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="particleAmount">See particleAmount argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 /// <param name="fieldSize">The dimensions of the area where the user can be.</param>
 /// <param name="smoother">See smoother argument of the constructor of <seealso cref="AbstractParticleFilter"/></param>
 public PositionParticleFilter(
     INoiseGenerator noiseGenerator,
     float resampleNoiseSize,
     IResampler resampler,
     IParticleGenerator particleGenerator,
     int particleAmount,
     FieldSize fieldSize,
     ISmoother smoother)
     : base(
         resampler,
         noiseGenerator,
         new LinearParticleController(particleGenerator, particleAmount, fieldSize.Xmin, fieldSize.Xmax),
         new LinearParticleController(particleGenerator, particleAmount, fieldSize.Ymin, fieldSize.Ymax),
         new LinearParticleController(particleGenerator, particleAmount, fieldSize.Zmin, fieldSize.Zmax),
         resampleNoiseSize,
         smoother,
         Enumerable.Average)
 {
     this.displacementSources = new List <IDisplacementSource>();
     this.positionSources     = new List <IPositionSource>();
     this.iex = new LinearRegression();
     this.iey = new LinearRegression();
     this.iez = new LinearRegression();
 }
 public FractalBrownianMotionSpectralGenerator(INoiseGenerator noiseGenerator)
 {
     _noiseGenerator = noiseGenerator;
 }
 public RidgedMultiFractalSpectralGenerator(INoiseGenerator noiseGenerator)
 {
     _noiseGenerator = noiseGenerator;
 }
Пример #39
0
 public PerlinNoiseElevation(INoiseGenerator noiseGenerator)
 {
     this.m_NoiseGenerator = noiseGenerator;
 }
 public void SetUp()
 {
     _noiseGenerator = MockRepository.GenerateStub<INoiseGenerator>();
 }
Пример #41
0
 public ScaledNoiseGenerator()
 {
     _largeScaleNoise = new ImprovedPerlinNoise(4711);
     _noise = new NoiseFactory.RidgedMultiFractal().Create(new NoiseFactory.NoiseParameters());
 }
 public HeightMapGenerator(INoiseGenerator noiseGenerator)
 {
     _noiseGenerator = noiseGenerator;
 }
 public SlowedHeightIncreaseNoiseDecorator(INoiseGenerator generator)
     : base(generator)
 {
 }
 public TerrainGenerator(INoiseGenerator noiseGenerator)
 {
     //_noise = new FractalBrownianMotion(new SimplexNoise(), settings);
     _noise = noiseGenerator;//new RidgedMultiFractal(new SimplexNoise(), 7, 2.1347);
     _colorCycle = new ColorCycle();
 }
 public FractalBrownianMotion(INoiseGenerator noiseGenerator, FractalBrownianMotionSettings settings)
 {
     _settings = settings;
     _noiseGenerator = noiseGenerator;
 }
Пример #46
0
 public NormNoiseDecorator(INoiseGenerator generator)
     : base(generator)
 {
 }
Пример #47
0
 protected NoiseDecorator(INoiseGenerator generator)
 {
     this.m_Generator = generator;
 }
 public DistanceFromWaterElevation(INoiseGenerator noiseGenerator)
 {
     this.m_NoiseGenerator = noiseGenerator;
 }
 public NoiseDecorator(double amplitude, double frequency, INoiseGenerator noiseGenerator)
 {
     _noiseGenerator = noiseGenerator;
     _frequency = frequency;
     _amplitude = amplitude;
 }
Пример #50
0
 public DiamondSquareHeightOffsetGenerator(int seed, double roughness, INoiseGenerator noiseGenerator)
 {
     _noiseGenerator = noiseGenerator;
     _roughness = roughness;
     _random = new Random(seed);
 }
        public void GenerateTerrain(IScene scene, string[] s)
        {
            string noiseType = MainConsole.Instance.Prompt("Noise generator (Perlin or Kosh)", "Perlin");
            bool perlinNoise = noiseType.ToLower().StartsWith("p");
            int baseHeight;

            if (perlinNoise)
            {
                _noiseGen = m_perlinNoise;
                PerlinNoiseSettings pns = new PerlinNoiseSettings();
                pns.ResultX = scene.RegionInfo.RegionSizeX;
                pns.ResultY = scene.RegionInfo.RegionSizeY;
                pns.RandomSeed = int.Parse(MainConsole.Instance.Prompt("Random Seed (0-infinity)", "10"));
                pns.CorsenessX = int.Parse(MainConsole.Instance.Prompt("Coarseness (X direction) (2-1000)", "100"));
                pns.CorsenessY = int.Parse(MainConsole.Instance.Prompt("Coarseness (Y direction) (2-1000)", "100"));
                pns.FlatEdges = MainConsole.Instance.Prompt("Flat Edges (recommended)", "true", new List<string>(new[] { "true", "false" })) == "true";
                pns.Octaves = int.Parse(MainConsole.Instance.Prompt("Octaves (0-infinity)", "5"));
                pns.Persistence = float.Parse(MainConsole.Instance.Prompt("Persistence", "0.8"));
                _noiseGen.Settings = pns;
                baseHeight = 30;
            }
            else
            {
                _noiseGen = m_kochLikeNoise;
                KochLikeNoiseSettings kns = new KochLikeNoiseSettings();
                //kns.ResultX = MainConsole.Instance.Prompt.RegionInfo.RegionSizeX;
                //kns.ResultY = MainConsole.Instance.Prompt.RegionInfo.RegionSizeY;
                kns.ResultX = scene.RegionInfo.RegionSizeX * 2;
                kns.ResultY = scene.RegionInfo.RegionSizeY * 2;
                kns.H = double.Parse(MainConsole.Instance.Prompt("Smoothing (Higher values are smoother)", "1.5"));
                kns.InitalGridX = int.Parse(MainConsole.Instance.Prompt("Initial Grid X", "2"));
                if(kns.InitalGridX < 2)
                    kns.InitalGridX = 2;
                kns.InitalGridY = int.Parse(MainConsole.Instance.Prompt("Initial Grid Y", "2"));
                if(kns.InitalGridY < 2)
                    kns.InitalGridY = 2;
                // grid X/Y divide the region so...
                //                kns.ResultX = kns.ResultX * kns.InitalGridX;
                //                kns.ResultY = kns.ResultY * kns.InitalGridY;

                kns.RandomMin = int.Parse(MainConsole.Instance.Prompt("Random Min", "-1"));
                kns.RandomMax = int.Parse(MainConsole.Instance.Prompt("Random Max", "1"));
                kns.RandomSeed = int.Parse(MainConsole.Instance.Prompt("Random Seed", "0"));
                kns.Scale = double.Parse(MainConsole.Instance.Prompt("Scale", "1.0"));

                _noiseGen.Settings = kns;
                baseHeight = 0;
            }

            float scaling = float.Parse(MainConsole.Instance.Prompt("Fractal Scaling", "50"));
            float[,] land = _noiseGen.Generate();
            ITerrainChannel c = new TerrainChannel(scene);
            for(int x = 0; x < scene.RegionInfo.RegionSizeX; x++)
            {
                for(int y = 0; y < scene.RegionInfo.RegionSizeY; y++)
                {
                    c[x, y] = (land[x, y] * scaling) + (float)scene.RegionInfo.RegionSettings.WaterHeight + baseHeight;
                }
            }
            scene.RequestModuleInterface<ITerrainModule>().TerrainMap = c;
            scene.RequestModuleInterface<ITerrainModule>().TaintTerrain();
            scene.RegisterModuleInterface<ITerrainChannel>(c);
        }
 /// <summary>
 /// Initialises a new instance of the SeededNoiseGenerator class.
 /// </summary>
 /// <param name="baseGenerator">The base noise generator.</param>
 /// <param name="seed">The seed value.</param>
 public SeededNoiseGenerator(INoiseGenerator baseGenerator, int seed)
 {
     this.baseGenerator = baseGenerator;
     this.seed = seed;
 }
Пример #53
0
            public ImplicitChunkHeightMap(Box3D bounds, int columns, int rows, INoiseGenerator noiseGenerator)
            {
                _noiseGenerator = noiseGenerator;
                _rows = rows;
                _columns = columns;
                _bounds = bounds;

                var origin = CalculatePosition(0, 0);
                var position = CalculatePosition(1, 1);

                _dx = 1 / (position.X - origin.X);
                _dy = 1 / (position.Y - origin.Y);
            }
 public ChunkNoiseGenerator(Vector2 offset, INoiseGenerator noiseGenerator)
 {
     _offset = offset;
     _noiseGenerator = noiseGenerator;
 }
Пример #55
0
        private static void Run()
        {
            Console.Write("Please enter width in pixels : ");
            var width = int.Parse(Console.ReadLine());
            Console.Write("Please enter height in pixels : ");
            var height = int.Parse(Console.ReadLine());
            Console.Write("Press 1 to use Perlin, 2 to use Improved Perlin : ");

            if(int.Parse(Console.ReadLine()) == 1)
                _noiseGenerator = new Perlin();
            else
                _noiseGenerator = new PerlinImproved();

            //Console.Write("Please enter Frequency (0.01) : ");
            //_noiseGenerator.Frequency = float.Parse(Console.ReadLine());
            //Console.Write("Please enter Amplitude (4.8) : ");
            //_noiseGenerator.Amplitude = float.Parse(Console.ReadLine());
            //Console.Write("Please enter Persistence (0.9) : ");
            //_noiseGenerator.Persistence = float.Parse(Console.ReadLine());
            //Console.Write("Please enter Octaves (2) : ");
            //_noiseGenerator.Octaves = int.Parse(Console.ReadLine());

            var terrain = new double[width * height];
            var normalisedTerrain = new double[width*height];
            var counter = 0;

            for(var y=0; y<height; y++)
            {
                for(var x=0; x<width; x++)
                {
                    terrain[counter++] = _noiseGenerator.Compute(x, y);
                }
            }

            var normalisedValues = Normalisation.CalculateInitialValues(terrain, 0, 255);
            var count = 0;

            var imageX = 0;
            var imageY = 0;
            var outputImage = new Bitmap(width, height);

            foreach (var value in terrain)
            {
                var normalisedValue = (int)Normalisation.Normalise(normalisedValues, value);
                normalisedTerrain[count++] = normalisedValue;

                outputImage.SetPixel(imageX++, imageY, Color.FromArgb(normalisedValue, normalisedValue, normalisedValue));
                if (imageX != outputImage.Width) continue;
                imageY++;
                imageX = 0;
            }

            double row = 0;
            const int gridSize = 1;
            var w = new World() {Name = "Default", Id = Guid.NewGuid()};

            for (var y = 0; y < height; y++)
            {
                row = (row + 2) % 2 == 0 ? 1 : 0;

                for (var x = 0; x < width; x++)
                {
                    var xx = ((x + 1) * (gridSize * 2));
                    if ((y + 2) % 2 != 0)
                    {
                        xx = ((x + 1) * (gridSize * 2)) - gridSize;
                    }

                    var yy = (int)((y * gridSize) * 0.5);
                    w.AddHex(new Hex()
                                {
                                    HexType = GetHexType(GetHeight(normalisedTerrain, xx, yy, width)),
                                    Id = Guid.NewGuid(),
                                    X = xx,
                                    Y = yy
                                });

                    row += 2;
                }
            }

            Console.WriteLine("Total Hexes : " + w.TotalHexes);
            Console.WriteLine(GetCountForType(HexType.Ocean, w));
            Console.WriteLine(GetCountForType(HexType.Sea, w));
            Console.WriteLine(GetCountForType(HexType.Beach, w));
            Console.WriteLine(GetCountForType(HexType.Plain, w));
            Console.WriteLine(GetCountForType(HexType.Grass, w));
            Console.WriteLine(GetCountForType(HexType.Trees, w));
            Console.WriteLine(GetCountForType(HexType.Jungle, w));
            Console.WriteLine(GetCountForType(HexType.Hill, w));
            Console.WriteLine(GetCountForType(HexType.Mountain, w));

            outputImage.Save(@"c:\temp\map.jpg");
            Process.Start(@"c:\temp\map.jpg");

            Console.ReadKey();
        }