public CartesianFieldController(CartesianField field, CartesianFieldRenderer renderer) { Field = field; Parser = new Parser(Field); Renderer = renderer; PendingVariables = new List <Variable>(); }
public CartesianFieldRenderer(CartesianField field, FieldRendererControl renderControl) { Field = field; RenderControl = renderControl; FieldOfView = new Camera(new Vector2(-5, -5), new Vector2(10, 10)); P_Renderer = new PrimitiveRenderer(renderControl); }
public Maze(params int[] dimensions) { cells = new CartesianField <bool[]>(new ImmutableVector <int>(dimensions), _ => { var walls = new bool[dimensions.Length]; for (int i = 0; i < walls.Length; ++i) { walls[i] = true; } return(walls); }); }
public MainForm() { InitializeComponent(); Field = new CartesianField(); Renderer = new CartesianFieldRenderer(Field, GraphWindow); Controller = new CartesianFieldController(Field, Renderer); MainGraphListControl.Controller = Controller; GraphWindow.FieldRenderer = Renderer; GraphWindow.CanBeControlled = true; GraphWindow.Run(40); }
public GraphOptionsForm(FunctionGraph graph) { InitializeComponent(); TestField = new CartesianField(); Renderer = new CartesianFieldRenderer(TestField, GraphWindow); Controller = new CartesianFieldController(TestField, Renderer); K = Controller.CreateVariable("k"); Graph = Controller.CreateGraph(Controller.CreateFunction("sin ( x + k )")); WidthTrackBar.Value = (int)(Graph.Width * 10); WidthLabel.Text = "Width: " + Graph.Width.ToString(); Controller.EnableGraph(Graph); GraphWindow.FieldRenderer = Renderer; GraphWindow.SetCameraBounds(new RectangleD(new Vector2(-5, -2), new Vector2(10, 4))); GraphWindow.OnUpdate += OnGraphUpdate; GraphWindow.Run(24); }
public static void Generate(Maze maze) { var cells = new CartesianField <Cell>(maze.Dimensions, coordinate => new Cell(maze[coordinate])); var walls = new List <Wall>(maze.Volume * maze.Dimensions.Dimensionality); foreach (var coordinate in cells.Coordinates) { for (int i = 0; i < coordinate.Dimensionality; ++i) { if (coordinate[i] > 0) { walls.Add(new Wall { owner = cells[coordinate], side = i, other = cells[Maze.GetNeighbor(coordinate, i)] }); } } } // eliminate n - 1 walls for (int c = 1; c < maze.Volume; ++c) { int i = Random.Range(0, walls.Count); var wall = walls[i]; walls.RemoveAt(i); if (ResolveSubtree(wall.owner) == ResolveSubtree(wall.other)) { --c; } else { wall.owner.Walls[wall.side] = false; ResolveSubtree(wall.owner).Subtree = wall.other.Subtree; } } }