public NodeGrid(Sz2 <int> strides, IEnumerable <P1V <int, float> > tuples, int generation, int seed) { Strides = strides; Values = new float[Strides.Count()]; foreach (var tup in tuples) { Values[tup.X] = tup.V; } Generation = generation; Seed = seed; var randy = GenV.Twist(Seed); Noise = GenS.NormalSF32(randy, 0.0f, 1.0f).Take(Strides.Count()).ToArray(); NextSeed = randy.Next(); var Offhi = new P2 <int>(0, -1); var Offlo = new P2 <int>(0, 1); var Offlf = new P2 <int>(-1, 0); var Offrt = new P2 <int>(1, 0); Top = GridUtil.OffsetIndexes(Strides, Offhi); Bottom = GridUtil.OffsetIndexes(Strides, Offlo); Left = GridUtil.OffsetIndexes(Strides, Offlf); Right = GridUtil.OffsetIndexes(Strides, Offrt); }
public void Update(object data) { var results = new List <RV <float, Color> >(); var cellSize = new Sz2 <double> ( x: ImageSize.X / (MaxX.CurVal - MinX.CurVal), y: ImageSize.X / (MaxY.CurVal - MinY.CurVal) ); for (var i = MinX.CurVal; i < MaxX.CurVal; i++) { for (var j = MinY.CurVal; j < MaxY.CurVal; j++) { results.Add((RV <float, Color>) _cellUpdater(new P2 <int>(x: i, y: j), new R <double>( minX: i * cellSize.X, maxX: (i + 1) * cellSize.X, minY: j * cellSize.Y, maxY: (j + 1) * cellSize.Y ), data)); } } WbImageVm.ImageData = Id.MakeImageData( plotPoints: Enumerable.Empty <P2V <float, Color> >(), plotLines: Enumerable.Empty <LS2V <float, Color> >(), filledRects: results, openRects: Enumerable.Empty <RV <float, Color> >() ); }
public Grid2DVm(Sz2 <int> strides, ColorLeg <T> colorLeg, string title = "") { Strides = strides; ColorLeg = colorLeg; WbImageVm = new WbImageVm(); Title = title; }
void Update() { if (ImageSize is null) { return; } var cellSize = new Sz2 <double> ( x: ImageSize.X / (MaxX.CurVal - MinX.CurVal), y: ImageSize.Y / (MaxY.CurVal - MinY.CurVal) ); TileVms.Clear(); for (var i = MinX.CurVal; i < MaxX.CurVal; i++) { for (var j = MinY.CurVal; j < MaxY.CurVal; j++) { TileVms.Add(_cellUpdater( new P2 <int>(x: i, y: j), new R <double>( minX: (i - MinX.CurVal) * cellSize.X, maxX: (i + 1 - MinX.CurVal) * cellSize.X, minY: (j - MinY.CurVal) * cellSize.Y, maxY: (j + 1 - MinY.CurVal) * cellSize.Y) )); } } }
public Sz2IntVm(Sz2 <int> sz2Int, int maxVal) { Sz2Int = sz2Int; MaxVal = maxVal; _x = Sz2Int.X.ToString(); _y = Sz2Int.Y.ToString(); }
public Hist2DVm(Sz2 <int> binCounts, Func <int[], ColorLeg <int> > colorLegger, string title = "") { _enforceBounds = false; BinCounts = new Sz2IntVm(binCounts); ColorLegger = colorLegger; GraphVm = new GraphVm(); }
public void TestSparseF32MatrixToBase64() { var bounds = new Sz2 <int>(3, 5); var aIn = GenMatrix.RandSparseF32(bounds, 8, 123); var base64 = MathNetConv.SparseF32MatrixToBase64(aIn); var aOut = MathNetConv.Base64ToSparseF32Matrix(bounds, base64.Item1, base64.Item2, base64.Item3); Assert.IsTrue(aIn.IsSameAs(aOut)); }
public void TestDenseF32MatrixToBase64() { var bounds = new Sz2 <int>(3, 5); var aIn = GenMatrix.DenseUF32(bounds, 123); var base64 = MathNetConv.DenseF32MatrixtoBase64(aIn); var aOut = MathNetConv.Base64ToDenseF32Matrix(bounds, base64); Assert.IsTrue(aIn.IsSameAs(aOut)); }
public void TestFloatA2ToBase64() { var bounds = new Sz2 <int>(3, 5); var aIn = GenA2.RandUF32(bounds, 123); var base64 = BTconv.F32A2toBase64(aIn); var aOut = BTconv.Base64ToF32A2(bounds, base64); Assert.IsTrue(aIn.IsSameAs(aOut)); }
public Hist2DVm(Sz2 <int> binCounts, R <float> bounds, Func <int[], ColorLeg <int> > colorLegger, string title = "") { _enforceBounds = true; BinCounts = new Sz2IntVm(binCounts, 800); Bounds = bounds; ColorLegger = colorLegger; GraphVm = new GraphVm(); }
public static IEnumerable <P2 <int> > Raster(this Sz2 <int> bounds) { for (var x = 0; x < bounds.X; x++) { for (var y = 0; y < bounds.Y; y++) { yield return(new P2 <int>(x, y)); } } }
public static NodeGrid RandNodeGrid(Sz2 <int> bounds, int initSeed, int updateSeed) { var nodeVals = GenS.SeqOfRandUF32(GenV.Twist(initSeed)).Take(bounds.Count()).ToArray(); var tuples = Enumerable.Range(0, bounds.Count()).Select(i => new P1V <int, float>(i, nodeVals[i])); return(new NodeGrid( strides: bounds, tuples: tuples, generation: 0, seed: updateSeed )); }
public void TestOffsetIndexes() { var rowCount = 5; var colCount = 7; var gridSz = new Sz2 <int>(colCount, rowCount); var Offp = new P2 <int>(0, 0); var Offpp = new P2 <int>(1, 1); var a1 = GridUtil.OffsetIndexes(gridSz, Offp); var a2 = GridUtil.OffsetIndexes(gridSz, Offpp); }
void InitLogicStuff() { var dataSz = new Sz2 <int>(25, 25); var dilly = System.IO.Path.GetFullPath("../../../../Debug/Mite.Cpp.dll"); //Logic.InitializeLibrary(@"C:\Users\tpnsc\source\repos\Mite\Debug\Mite.Cpp.dll"); Logic.InitializeLibrary(dilly); using (var wrapper = new Logic()) { _backSlashArray = wrapper.BackSlashArray(dataSz.X, 0, 1).ToArray(); } }
public Grid2DVm(Sz2 <int> strides, ColorLeg <T> colorLeg, string title = "") { Strides = strides; ColorLeg = colorLeg; WbImageVm = new WbImageVm(); Title = title; LegendVm = new LegendVm( minVal: "<" + colorLeg.range.Min, midVal: ColorSets.GetLegMidVal(colorLeg).ToString(), maxVal: ">" + colorLeg.range.Max, minCol: colorLeg.minC, midColors: colorLeg.spanC, maxColor: colorLeg.maxC ); }
public Grid2D2IVm(Sz2 <int> strides, ColorLeg2I <float> colorLeg, string title = "") { Strides = strides; ColorLeg2I = colorLeg; WbImageVm = new WbImageVm(); Title = title; var sp = A2dUt.GetColumn(colorLeg.spanC, colorLeg.spanC.GetLength(1) - 1); LegendVm = new LegendVm( minVal: "<" + colorLeg.rangeV.MinY, midVal: ColorSets2I.GetLegMidVal(colorLeg).ToString(), maxVal: ">" + colorLeg.rangeV.MaxY, minCol: colorLeg.exteriorC, midColors: sp, maxColor: colorLeg.exteriorC ); }
public GraphLatticeVm(R <uint> latticeBounds, string title = "Title", string titleX = "TitleX", string titleY = "TitleY") { _wbImageVm = new WbImageVm(); _imageSize = new Sz2 <double>(1.0, 1.0); _wbImageVm.ImageData = Id.InitImageData(); LatticeBounds = latticeBounds; MinX = new IntRangeVm(min: (int)LatticeBounds.MinX, max: (int)LatticeBounds.MaxX, cur: (int)LatticeBounds.MinX); MinX.OnCurValChanged.Subscribe(v => CurvalChanged()); MaxX = new IntRangeVm(min: (int)LatticeBounds.MinX, max: (int)LatticeBounds.MaxX, cur: (int)LatticeBounds.MaxX); MaxX.OnCurValChanged.Subscribe(v => CurvalChanged()); MinY = new IntRangeVm(min: (int)LatticeBounds.MinY, max: (int)LatticeBounds.MaxY, cur: (int)LatticeBounds.MinY); MinY.OnCurValChanged.Subscribe(v => CurvalChanged()); MaxY = new IntRangeVm(min: (int)LatticeBounds.MinY, max: (int)LatticeBounds.MaxY, cur: (int)LatticeBounds.MaxY); MaxY.OnCurValChanged.Subscribe(v => CurvalChanged()); Title = title; TitleX = titleX; TitleY = titleY; }
async void RunBatch() { int Stride = 32; var jobs = 4; var GridStrides = new Sz2 <int>(Stride, Stride); var nodeGrid = NodeProcs.RandNodeGrid(GridStrides, 123, 456); var localOrders = ColUtils.SubSeqs(jobs, GridStrides.Count() / jobs) .Select(t => t.ToList()) .ToList(); var trackedTasks = new List <Task <int> >(); for (var i = 0; i < jobs; i++) { var i1 = i; trackedTasks.Add(Task.Run(() => { Thread.Sleep(2000); return(i1); })); } await Task.WhenAll(trackedTasks); var tot = trackedTasks.Sum(tt => tt.Result); }
public void TestIndexForGrid() { var rowCount = 5; var colCount = 7; var gridSz = new Sz2 <int>(colCount, rowCount); var Offpp = new P2 <int>(colCount, rowCount); var Offmm = new P2 <int>(-colCount, -rowCount); var Off2pp = new P2 <int>(2 * colCount, 2 * rowCount); var Off2mm = new P2 <int>(-2 * colCount, -2 * rowCount); var row = 1; var col = 2; var dex = row * colCount + col; Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Offpp)); Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Offmm)); Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Off2pp)); Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Off2mm)); row = 4; col = 6; dex = row * colCount + col; Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Offpp)); Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Offmm)); Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Off2pp)); Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Off2mm)); row = 2; col = 6; dex = row * colCount + col; Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Offpp)); Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Offmm)); Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Off2pp)); Assert.AreEqual(dex, GridUtil.IndexForGrid(gridSz, Off2mm)); }
public static Star2Grid RandStarGrid(Sz2 <int> bounds, int seed) { return(new Star2Grid(GenA2.RandUF32(bounds, seed), seed)); }
public static Star5Grid RandStarGrid(Sz2 <int> bounds, float[,] fixedVals, int seed) { return(new Star5Grid(GenA2.RandUF32(bounds, seed), fixedVals, seed)); }
public static StarGrid RandStarGrid(Sz2 <int> bounds, int initSeed, int updateSeed) { return(new StarGrid(GenA2.RandUF32(bounds, initSeed), updateSeed)); }
public static int Count(this Sz2 <int> bounds) { return(bounds.X * bounds.Y); }
public Sz2IntVm(Sz2 <int> sz2Int) { Sz2Int = sz2Int; _x = Sz2Int.X.ToString(); _y = Sz2Int.Y.ToString(); }
public static IEnumerable <P2V <int, float> > DataToP2Vs(this NodeArray nodeArray, Sz2 <int> bounds) { var index = 0; for (var x = 0; x < bounds.X; x++) { for (var y = 0; y < bounds.X; y++) { yield return(new P2V <int, float>(x, y, (float)nodeArray.Current[index++])); } } }
public static NodeArray RandNodeArray(Sz2 <int> bounds, Random randy) { return(new NodeArray(Enumerable.Range(0, bounds.Count()) .Select(i => randy.NextDouble() * 2 - 1.0) .ToArray())); }
private void DoUpdate() { Sz2Int = new Sz2 <int>(x: int.Parse(_x), y: int.Parse(_y)); _sizeChanged.OnNext(Sz2Int); }