public DrawingHost(Rect rect) { this.MouseDown += Host_MouseDown; this.MouseMove += Host_MouseMove; this.MouseUp += Host_MouseUp; backingStore = new DrawingGroup(); triangleGrid = new TriangleGrid(rect); PixelHeight = (int)((triangleGrid.Rows - 1) * SideLength) + 1; PixelWidth = (int)((triangleGrid.Cols - 1) * SideLength) + 1; this.Rect = new Rect(rect.Left, rect.Top, PixelWidth, PixelHeight); WriteableBitmap bitmap = new WriteableBitmap(PixelWidth, PixelHeight, DPI, DPI, MyPixelFormat, null); currentNormalMap = new byte[bitmap.PixelHeight * bitmap.BackBufferStride]; background = new Background(bitmap, triangleGrid.Grid, Rect, currentNormalMap); currentColor = Colors.White; currentColorBitmap = GetScaledImage(DefaultImage); InitializeNormapBitmap(UseConstantVector ? null : DefaultNormalMap); if (UseConstantColor) { background.FillGrid(currentColor); } else { background.FillGrid(currentColorBitmap); } }
public static TriangleGrid CreateTriangleGrid(int size) { var width = (2 * size) - 1; var height = size; if (size % 2 == 0) { height++; } var grid = new TriangleGrid(height, width); grid.Init(); // Disable cells for (int row = 0; row < height; row++) { var end = height - 1 - row; for (int col = 0; col < end; col++) { grid.SetCell(row, col, null); grid.SetCell(row, width - col - 1, null); } } grid.ConfigureCells(); return(grid); }
public static TriangleGrid CreateTriangleGrid(int rows, int columns) { var grid = new TriangleGrid(rows, columns); grid.Init(); return(grid); }
private static void MakeTriangleDeltaMaze() { var grid = new TriangleGrid(11); RecursiveBacktracker.Maze(grid, startAt: null); var img = grid.ToImg(); img.Save("triGrid.png"); Process.Start("triGrid.png"); }
// Use this for initialization void Awake() { attractionPoints = new System.Collections.Generic.List <Transform>(); gridScript = GameObject.FindGameObjectWithTag("GameManager").GetComponent <TriangleGrid>(); centerPoints = new System.Collections.Generic.List <Transform>(); for (int i = 0; i < transform.childCount; i++) { if (transform.GetChild(i).tag == "MiddleControlPoint") { centerPoints.Add(transform.GetChild(i)); } } faceNormals[0] = Quaternion.Euler(new Vector3(0, 0, 60)) * transform.up; faceNormals[1] = Quaternion.Euler(new Vector3(0, 0, 120)) * faceNormals[0]; faceNormals[2] = Quaternion.Euler(new Vector3(0, 0, 120)) * faceNormals[1]; updateAttractionPoints(); }
/// <summary> /// Initialise the data needed for colliding with height maps and fires the /// <c>HeightMapTerrainColliderCreation</c> event. /// </summary> void Start() { heightMapTerrain = GetComponent <HeightMapTerrain>(); Width = heightMapTerrain.sourceRect.width; Height = heightMapTerrain.sourceRect.height; CellSize = heightMapTerrain.cellSize; TriMesh = GetComponent <MeshFilter>().sharedMesh; TriGrid = new TriangleGrid( TriMesh.vertices, TriMesh.triangles, Width - 1, Height - 1, CellSize, transform.localScale, transform.position ); var args = new CollisionEvents.HeightMapColliderCreationEventArgs(this); CollisionEvents.FireEvent(CollisionEvents.EventType.HeightMapTerrainColliderCreation, gameObject, args); }
private void DrawMaze(object sender, EventArgs e) { if (cbAlgorithm.SelectedItem != null) { Image img; var grid = new Grid(MazeSize, MazeSize); if (pbMask.Image != null) { var mask = Mask.FromBitmap((Bitmap)pbMask.Image); grid = new MaskedGrid(mask); } else if (_mode == MazeStyle.Polar) { grid = new PolarGrid(MazeSize); } else if (_mode == MazeStyle.Hex) { grid = new HexGrid(MazeSize, MazeSize * 3 / 2); } else if (_mode == MazeStyle.Triangle) { grid = new TriangleGrid(MazeSize, MazeSize * 2); } else if (_mode == MazeStyle.Upsilon) { grid = new UpsilonGrid(MazeSize, MazeSize); } else if (_mode == MazeStyle.Weave) { grid = new WeaveGrid(MazeSize, MazeSize); } if (!CreateSelectedMaze(grid)) { return; } img = grid.ToImg(GridSize, (float)nudInset.Value); pbMaze.Image = img; } }
IEnumerator PunchHoles() { const int SIZE = 5; const int SQUARE_SIZE = SIZE * SIZE; Color empty = TriangleGrid.CreateColor(Color.black, TileType.EMPTY); while (true) { int centerX = Random.Range(0, width); int centerY = Random.Range(0, height); int minX = Mathf.Max(centerX - SIZE, 0); int minY = Mathf.Max(centerY - SIZE, 0); int maxX = Mathf.Min(centerX + SIZE, width); int maxY = Mathf.Min(centerY + SIZE, height); for (int i = minX; i < maxX; i++) { for (int j = minY; j < maxY; j++) { int dx = i - centerX; int dy = j - centerY; if (dx * dx + dy * dy < SQUARE_SIZE) { triangleGrid.Set(i, j, empty); } } } triangleGrid.Apply(); yield return(null); //yield return new WaitForSeconds(0.5f); } }
static void Main(string[] args) { Console.OutputEncoding = Encoding.UTF8; // var m = Mask.FromText(@"C:\maze\code\mask.txt"); //var m = Mask.FromImage(@"c:\maze\code\maze_text.png"); //var s = new Stopwatch(); //s.Start(); var grid = new TriangleGrid(10,17); var swd = new RecursiveBackTracker(); swd.On(grid); //s.Stop(); //Console.WriteLine(s.Elapsed); //Console.WriteLine($"Deadends {grid.DeadEnds().Count}"); //// var start = grid[grid.Rows / 2, grid.Columns / 2]; //// grid.Distances = start.CellDistances(); //// Console.WriteLine(grid); grid.SaveToPng(); // DeadEndCounts(); Console.ReadLine(); }
// Use this for initialization void Awake() { attractionPoints = new System.Collections.Generic.List<Transform>(); gridScript = GameObject.FindGameObjectWithTag("GameManager").GetComponent<TriangleGrid>(); centerPoints = new System.Collections.Generic.List<Transform>(); for(int i=0; i< transform.childCount; i++) { if(transform.GetChild(i).tag == "MiddleControlPoint") { centerPoints.Add(transform.GetChild(i)); } } faceNormals[0] = Quaternion.Euler( new Vector3(0, 0, 60)) * transform.up; faceNormals[1] = Quaternion.Euler( new Vector3(0, 0, 120)) * faceNormals[0]; faceNormals[2] = Quaternion.Euler( new Vector3(0, 0, 120)) * faceNormals[1]; updateAttractionPoints(); }
public void Setup() { // when _grid = new TriangleGrid(_rows, _columns); }