Нестандартное использование функции map

Функция map используется в Процессинге для пересчета позиции переменной из одного диапазона в другой (описание функции на сайте http://processing.org). Но можно расширить использование функции, чтобы менять еще и распределение с линейного на степенное. Для этого  возводим входную переменную и границы ее диапазона в степень, например в квадрат

float m = map(value * value, 0, 100 * 100, 0, width);

Небольшой пример с линейным,  квадратичным и кубическим распределением диаметров окружностей:



float D = 140;
int circleCount = 12;
void setup() {
  size(550, 320);
  noFill();
  strokeWeight(1.5);
  stroke(255, 204, 0);
  smooth();
  noLoop();
  background(20, 30, 50);
}

void draw()
{  
  stroke(255, 204, 0);
  float d = 0;
  for(int i = 0; i <= circleCount; i++)
  {
    d = map(i, 0, circleCount, 0, D);
    ellipse(100, height / 2f, d, d);

    d = map(i*i, 0, circleCount*circleCount, 0, D);
    ellipse(275, height / 2f, d, d);

    d = map(pow(i, 3), 0, pow(circleCount, 3), 0, D);
    ellipse(450, height / 2f, d, d);
  }
}