Ejemplo n.º 1
0
        public void MapMultipleCellsPeriodic()
        {
            byte[] tags = { 1, 181, 1, 181 };
            SortedList <byte, string> tagNames = new SortedList <byte, string>(2)
            {
                { 181, "Periodic-X" },
                { 1, "Dirichlet" }
            };
            VoronoiBoundary gridBoundary = new VoronoiBoundary
            {
                Polygon      = GridShapes.Rectangle(2, 2),
                EdgeTags     = tags,
                EdgeTagNames = tagNames,
                BoundingBox  = GridShapes.Rectangle(2, 2)
            };
            NodeTrackingVoronoiMesher mesher = new NodeTrackingVoronoiMesher(
                new VoronoiMesher <TrackableNode> .Settings()
            {
                Boundary = gridBoundary,
                NumberOfLloydIterations = 0,
            });
            int numberOfNodes           = 200;
            MultidimensionalArray array = MultidimensionalArray.Create(numberOfNodes, 2);
            Random random = new Random(0);

            for (int i = 0; i < numberOfNodes; ++i)
            {
                array[i, 0] = 2.0 * random.NextDouble() - 1.0;
                array[i, 1] = 2.0 * random.NextDouble() - 1.0;
            }
            VoronoiNodes      nodes  = new VoronoiNodes(array);
            MappedVoronoiGrid grid   = mesher.CreateGrid(nodes, 0);
            bool mapsNodesOntoItself = IsPermutation(grid.InputNodesToResultNodes, nodes, grid.Result.Nodes);

            Assert.IsTrue(mapsNodesOntoItself);
            MappedVoronoiGrid grid2 = mesher.CreateGrid(grid.Result.Nodes, 0);

            mapsNodesOntoItself = IsPermutation(grid2.InputNodesToResultNodes, grid.Result.Nodes, grid2.Result.Nodes);
            Assert.IsTrue(mapsNodesOntoItself);
        }
Ejemplo n.º 2
0
        public void MapOneCellPeriodic()
        {
            byte[] tags = { 1, 181, 1, 181 };
            SortedList <byte, string> tagNames = new SortedList <byte, string>(2)
            {
                { 181, "Periodic-X" },
                { 1, "Dirichlet" }
            };
            VoronoiBoundary gridBoundary = new VoronoiBoundary
            {
                Polygon      = GridShapes.Rectangle(2, 2),
                EdgeTags     = tags,
                EdgeTagNames = tagNames,
                BoundingBox  = GridShapes.Rectangle(2, 2),
            };
            NodeTrackingVoronoiMesher mesher = new NodeTrackingVoronoiMesher(
                new VoronoiMesher <TrackableNode> .Settings()
            {
                Boundary = gridBoundary,
                NumberOfLloydIterations = 0,
            });
            MultidimensionalArray array = MultidimensionalArray.Create(8, 2);

            array.SetRow(0, new double[] { -0.9, 0.7 });
            array.SetRow(1, new double[] { -0.8, -0.4 });
            array.SetRow(2, new double[] { 0, 0.5 });
            array.SetRow(3, new double[] { 0.05, 0 });
            array.SetRow(4, new double[] { 0.1, -0.5 });
            array.SetRow(5, new double[] { 0.8, 0.8 });
            array.SetRow(6, new double[] { 1.2, 0.2 });
            array.SetRow(7, new double[] { 0.5, -0.6 });

            VoronoiNodes      nodes = new VoronoiNodes(array);
            MappedVoronoiGrid grid  = mesher.CreateGrid(nodes, 0);

            Assert.IsTrue((
                              grid.Result.Nodes.Nodes[grid.InputNodesToResultNodes.GetMapping(0)].Position
                              - new Vector(-0.9, 0.7)).Abs() < 1e-12);
        }