Skip to content

DTL.Shape.FractalIsland (形状クラス)

sitRyo edited this page Jan 15, 2020 · 7 revisions

バージョン 0.1.0以降

namespace DTL.Shape {
    public class FractalIsland : RectBaseFractal<FractalIsland>
}

概要

FractalIslandとは "Matrixにフラクタルな地形を生成する" 機能を持つクラスである。

継承

DTL.Base.RectBaseFractal<TDerived>DTL.Shape.FractalIsland

インターフェース

IDrawer<int>
ITerrainDrawer

コンストラクタ

// (1)
FractalIsland()
// (2)
FractalIsland(uint startX, uint startY, uint width, uint height)
// (3)
FractalIsland(int minValue)
// (4)
FractalIsland(int minValue, int altitude)
// (5)
FractalIsland(int minValue, int altitude, int addAltitude)
// (6)
FractalIsland(DTL.Base.Coordinate2DimensionalAndLength2DimensionalmatrixRange matrixRange ,int minValue)
// (7)
FractalIsland(DTL.Base.Coordinate2DimensionalAndLength2DimensionalmatrixRange matrixRange ,int minValue, int altitude)
// (8)
FractalIsland(DTL.Base.Coordinate2DimensionalAndLength2DimensionalmatrixRange matrixRange ,int minValue, int altitude, int addAlititude)
// (9)
FractalIsland(uint startX, uint startY, uint width, uint height, int minValue)
// (10)
FractalIsland(uint startX, uint startY, uint width, uint height, int minValue, int altitude)
// (11)
FractalIsland(uint startX, uint startY, uint width, uint height, int minValue, int altitude, int addAltitude)
説明
(1) 初期値なしのインスタンスを生成する。
(2) 描画範囲を指定したインスタンスを生成する。
(3), (6), (9) 最小値を指定したインスタンスを生成する。
(4), (7), (10) 最小値と高度を指定したインスタンスを生成する。
(5), (8), (11) 最小値と高度, 高度の変動値を指定したインスタンスを生成する。

プロパティ

Name Accessibility Descriptions Version
uint startX public get, protected set 描画の開始点X v0.1.0
uint startY public get, protected set 描画の開始点Y v0.1.0
uint width public get, protected set 描画横幅W v0.1.0
uint height public get, protected set 描画縦幅H v0.1.0
int minValue public get, protected set 最小値 v0.1.0
int altitude public get, protected set 高度 v0.1.0
int addAltitude public get, protected set 高度の変動値 v0.1.0

メソッド

描画範囲取得/描画値取得

Name Descriptions Version
GetPointX 描画始点座標Xを取得 v0.1.0
GetPointY 描画始点座標Yを取得 v0.1.0
GetWidth 描画横幅Wを取得 v0.1.0
GetHeight 描画縦幅Hを取得 v0.1.0
GetPoint 描画始点座標を取得 v0.1.0
GetValue altiudeを取得 v0.1.0
GetAltitude altiudeを取得 v0.1.0
GetaddAltitude addAltitudeを取得 v0.1.0
GetMinValue minValueを取得 v0.1.0

描画範囲指定/描画値指定

Name Descriptions Version
SetPointX 描画始点座標Xを指定 v0.1.0
SetPointY 描画始点座標Yを指定 v0.1.0
SetWidth 描画横幅Wを指定 v0.1.0
SetHeight 描画縦幅Hを指定 v0.1.0
SetPoint 描画始点座標(X,Y)を指定 v0.1.0
SetRange 描画範囲(X,Y,W,H)を指定 v0.1.0
SetValue 高度を指定 v0.1.0

描画範囲消去/描画値消去

名前 説明 対応バージョン
ClearPointX 描画始点座標Xを消去 v0.1.0
ClearPointY 描画始点座標Yを消去 v0.1.0
ClearWidth 描画横幅Wを消去 v0.1.0
ClearHeight 描画縦幅Hを消去 v0.1.0
ClearPoint 描画始点座標(X,Y)を消去 v0.1.0
ClearRange 描画範囲(X,Y,W,H)を消去 v0.1.0
ClearValue altitudeを消去 v0.1.0
ClearAltitude altiudeを消去 v0.1.0
ClearaddAltitude addAltitudeを消去 v0.1.0
ClearMinValue minValueを消去 v0.1.0
Clear 描画範囲とaltitudeを消去 v0.1.0

インターフェースの実装

Name Descriptions Version
Draw(int[,]) Matrixに描画する v0.1.0
Create(int[,]) Matrixに描画してMatrixを返す v0.1.0
DrawNormalize(float[,]) [0, 1]に正規化した値をMatrixに描画する v0.1.0

Examples (C#)

using DTL.Console;
using DTL.Shape;
using UnityEngine;

public class GenerateFractalIsland : MonoBehaviour {
    public int width = 32;
    public int height = 32;
    public int minValue = 10;
    public int altitude = 100;
    public int addAltitude = 20;

    private FractalIsland fractalIsland;

	void Start () {
        var matrix = new int[height, width];
		fractalIsland = new FractalIsland(minValue, altitude, addAltitude);
        fractalIsland.Draw(matrix);

        new OutputConsole().Draw(matrix);
        new OutputConsole(arg => arg < 100, "..", "##").Draw(matrix);
    }

}

Output

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 1 3 3 3 4 4 5 4 5 7 7 6 6 7 6 5 5 6 6 6 5 4 4 2 4 4 3 3 2 2 2 
0 3 6 6 7 7 9 8 9 11 14 13 13 13 14 12 10 11 13 12 12 10 8 6 5 6 9 7 6 5 4 2 
0 3 6 6 10 11 12 13 13 14 18 17 19 18 18 16 15 15 17 17 18 15 12 10 7 7 9 9 9 7 5 2 
0 3 7 10 14 15 16 17 19 20 22 24 26 24 23 21 21 21 22 23 24 20 17 13 11 10 11 11 13 9 6 3 
0 3 8 10 15 18 20 22 23 23 26 26 29 28 28 25 25 24 25 26 26 23 19 16 13 12 12 11 11 8 7 3 
0 5 10 13 16 20 24 26 28 29 31 31 33 33 35 32 31 29 29 28 28 25 22 19 16 15 14 12 11 9 9 4 
0 5 9 13 17 21 26 30 33 33 34 34 36 36 37 35 36 34 32 31 30 26 24 21 19 17 15 12 10 7 6 3 
0 4 9 13 19 23 28 33 39 38 39 39 40 40 41 41 42 39 37 34 32 29 27 24 23 19 16 13 11 7 5 2 
0 5 9 13 19 23 29 33 38 39 42 42 43 45 46 46 47 44 41 39 37 33 32 27 24 20 19 15 13 9 5 3 
0 5 10 15 21 25 30 34 39 42 46 46 47 49 52 52 52 49 47 44 42 40 38 32 27 24 22 19 16 11 7 3 
0 6 11 16 22 26 31 35 39 41 46 46 50 51 55 56 57 53 51 49 47 43 40 33 29 26 24 21 19 13 8 4 
0 6 12 18 24 28 32 36 40 43 47 50 54 56 58 60 63 59 57 54 53 47 42 37 32 29 27 24 22 16 11 5 
0 7 12 18 23 27 33 36 40 43 47 51 56 58 62 63 67 64 61 58 54 48 44 39 34 31 29 25 21 15 10 4 
0 6 13 17 22 28 34 37 41 44 48 53 58 62 66 69 73 69 67 61 57 51 46 41 37 34 32 26 21 15 10 5 
0 5 11 16 21 25 32 36 41 45 50 55 60 64 69 74 78 74 69 63 59 53 49 44 39 34 31 25 20 14 10 5 
0 5 10 15 21 25 31 36 42 47 52 57 63 67 73 78 85 78 73 67 63 57 52 47 42 36 31 25 21 15 10 5 
0 5 9 13 18 24 29 34 39 45 50 55 59 63 67 72 78 74 69 63 59 54 50 45 40 33 30 25 20 15 10 4 
0 4 8 12 17 22 28 32 36 42 48 52 56 59 63 67 73 69 67 61 57 52 49 43 39 34 31 25 21 15 10 5 
0 3 7 11 15 19 25 29 33 38 44 48 53 55 59 63 67 64 61 57 54 50 46 41 37 33 29 25 21 15 10 4 
0 3 7 10 15 18 22 26 31 35 40 45 51 53 56 59 63 59 57 54 53 48 44 40 37 32 29 25 23 16 11 5 
0 2 5 8 13 16 21 23 27 30 35 40 45 47 51 54 57 54 51 49 48 45 41 37 35 32 29 23 20 13 10 4 
0 2 5 8 12 16 21 22 25 27 31 35 40 43 47 49 52 49 47 45 44 41 39 36 34 32 30 24 19 14 10 5 
0 3 4 8 11 13 17 19 22 24 27 31 35 37 41 44 47 44 42 41 40 38 36 33 33 30 27 22 17 13 9 5 
0 2 5 7 10 12 15 17 21 22 25 27 31 33 36 39 42 40 39 37 37 35 34 33 32 28 24 20 16 12 8 4 
0 3 5 6 8 10 13 14 17 20 22 25 27 29 32 34 36 35 35 33 33 31 32 30 28 25 21 18 14 10 7 3 
0 3 7 6 7 9 12 13 15 17 20 22 24 26 28 29 31 31 33 31 31 30 30 27 24 21 19 15 12 9 6 3 
0 2 4 3 5 7 9 9 12 13 17 18 21 22 23 24 25 25 27 27 28 25 25 22 20 18 15 12 10 8 5 2 
0 1 2 3 5 5 7 8 10 12 14 16 18 18 19 19 21 21 23 24 27 23 21 18 16 14 12 10 8 6 4 2 
0 1 3 2 3 3 5 6 7 8 10 10 13 14 15 15 15 14 16 17 19 18 16 14 12 11 9 8 6 6 4 2 
0 2 5 3 2 3 4 4 5 5 6 7 9 10 13 11 10 10 11 11 13 12 13 10 8 7 6 5 4 4 4 2 
0 1 2 1 1 2 2 2 2 2 3 4 4 5 6 5 5 5 5 6 6 7 6 6 4 3 3 3 2 2 2 2 

Terrainへ出力

using DTL.Shape;
using DTL.Random;
using System.Collections.Generic;
using DTL.Util;
using UnityEngine;

public class GenerateFractalIslandTerrain : MonoBehaviour {
    public int depth = 20;
    public int width = 48;
    public int height = 48;
    public int minValue = 10;
    public int altitude = 150;
    public int addAltitude = 75;

    private Terrain terrain;
    private FractalIsland fractalIsland;
    private XorShift128 rand = new XorShift128();

    public List<Texture2D> texture2D = new List<Texture2D>();

    void Start() {
        fractalIsland = new FractalIsland(minValue, altitude, addAltitude);
        this.terrain = GetComponent<Terrain>();
        TerrainUtil terrainUtil = new TerrainUtil(terrain, texture2D, fractalIsland, height, width, depth);
        terrainUtil.Draw();
    }
}

Output

コメント 2020-01-15 080341 コメント 2020-01-15 080530

Clone this wiki locally