public GeneralizedDistanceTransform2D( Range rangeX, Range rangeY, Size gridSize) { if (rangeX.Outside || rangeY.Outside) { throw new ArgumentException("Outside ranges are not allowed."); } this.RangeX = rangeX; this.RangeY = rangeY; this.GridSize = gridSize; this.values = new double[this.GridSize.Width, this.GridSize.Height]; this.bestIndices = new Tuple <int, int> [this.GridSize.Width, this.GridSize.Height]; this.timeStamps = new int[this.GridSize.Width, this.GridSize.Height]; this.transformsForFixedGridX = new GeneralizedDistanceTransform1D[this.GridSize.Width]; for (int x = 0; x < this.GridSize.Width; ++x) { this.transformsForFixedGridX[x] = new GeneralizedDistanceTransform1D(rangeY, this.GridSize.Height); } this.transformsForFixedGridY = new GeneralizedDistanceTransform1D[this.GridSize.Height]; this.usedTransformsForFixedGridY = new GeneralizedDistanceTransform1D[this.GridSize.Height]; for (int y = 0; y < this.GridSize.Height; ++y) { transformsForFixedGridY[y] = new GeneralizedDistanceTransform1D(rangeX, this.GridSize.Width); } this.infiniteTransformX = new GeneralizedDistanceTransform1D(rangeX, this.GridSize.Width); this.infiniteTransformX.Compute(1, x => 1e+20); }
public GeneralizedDistanceTransform2D( Range rangeX, Range rangeY, Size gridSize) { if (rangeX.Outside || rangeY.Outside) throw new ArgumentException("Outside ranges are not allowed."); this.RangeX = rangeX; this.RangeY = rangeY; this.GridSize = gridSize; this.values = new double[this.GridSize.Width, this.GridSize.Height]; this.bestIndices = new Tuple<int, int>[this.GridSize.Width, this.GridSize.Height]; this.timeStamps = new int[this.GridSize.Width, this.GridSize.Height]; this.transformsForFixedGridX = new GeneralizedDistanceTransform1D[this.GridSize.Width]; for (int x = 0; x < this.GridSize.Width; ++x) this.transformsForFixedGridX[x] = new GeneralizedDistanceTransform1D(rangeY, this.GridSize.Height); this.transformsForFixedGridY = new GeneralizedDistanceTransform1D[this.GridSize.Height]; this.usedTransformsForFixedGridY = new GeneralizedDistanceTransform1D[this.GridSize.Height]; for (int y = 0; y < this.GridSize.Height; ++y) transformsForFixedGridY[y] = new GeneralizedDistanceTransform1D(rangeX, this.GridSize.Width); this.infiniteTransformX = new GeneralizedDistanceTransform1D(rangeX, this.GridSize.Width); this.infiniteTransformX.Compute(1, x => 1e+20); }