Procedurality.Channel.find C# (CSharp) Method

find() public method

public find ( int radius, int x_start, int y_start, float value ) : int[]
radius int
x_start int
y_start int
value float
return int[]
		public int[] find(int radius, int x_start, int y_start, float value) {
			if (getPixel(x_start, y_start) == value)
				return new int[]{x_start, y_start};
			int r = 1;
			while (r <= radius) {
				int x = x_start - r;
				int x2 = x_start + r;
				for (int i = 0; i < 2*r - 1; i++) {
					int y_i = y_start - r + 1 + i;
					if (getPixelWrap(x, y_i) == value)
						return new int[]{(x + width)%width, (y_i + height)%height};
					if (getPixelWrap(x2, y_i) == value)
						return new int[]{(x2 + width)%width, (y_i + height)%height};
				}
				int y = y_start - r;
				int y2 = y_start + r;
				for (int i = 0; i < 2*r + 1; i++) {
					int x_i = x_start - r + i;
					if (getPixelWrap(x_i, y) == value)
						return new int[]{(x_i + width)%width, (y + height)%height};
					if (getPixelWrap(x_i, y2) == value)
						return new int[]{(x_i + width)%width, (y2 + height)%height};
				}
				r++;
			}
			return new int[]{-1, -1};
		}