public boolean isImpassable(Position position, double radius) {
		double step = 0.1 * radius;
		//scale = meter per pixel => row&column = pixels
		double startRow = (position.getY() - radius);
		double startColumn = (position.getX() - radius);
		double endRow = (position.getY() + radius);
		double endColumn = (position.getX() + radius);

		for (double row = Math.max(startRow, 0); Math.floor(row) <= Math.floor(endRow) && Math.floor(row/this.getScale()) < passableMap.length; row += step) {
			for (double column = Math.max(startColumn, 0); Math.floor(column) <= Math.floor(endColumn) && Math.floor(column/this.getScale()) < passableMap[0].length; column += step) {
				if (!passableMap[(int) Math.floor(row/this.getScale())][(int) Math.floor(column/this.getScale())]) {
					if(Util.fuzzyLessThanOrEqualTo(Math.pow(row - position.getY(), 2)
							+ Math.pow(column - position.getX(), 2), Math.pow(radius, 2), 1E-15) 
								&& !Util.fuzzyEquals(Math.pow(row - position.getY(), 2)
									+ Math.pow(column - position.getX(), 2), Math.pow(radius, 2), 1E-16)) {
						return true;
					}
				} else {
					//Skip to the next 'tile'.
					column = column + step*Math.floor((Math.ceil(column/this.getScale()) - column/this.getScale()) / step);
				}
			}
		}
		return false;
	}