Как насчет такой функции?
int pixelAt(int index, int min, int max, int a, int b, int b_2)
{
int pixel = -1;
if (min <= index && index <= max)
{
pixel = a * index + b;
if (i % 2)
{
pixel += b_2;
}
}
return pixel;
}
Тогда у вас будет:
for (int i = 0; i < numPixels; i++)
{
// This assumes setColor(-1, x) does nothing
setColor(pixelAt(i, 0, numPixels, 1, 0, 0), X);
setColor(pixelAt(i, 0, 15, 1, 18, -5), Y);
setColor(pixelAt(i, 0, 10, -3, numPixels, 0), Z);
}
Конечно, функция pixelAt
станет намного сложнее, если вы добавите новые требования, такие как изменение коэффициента умножения для четных чисел, обработка коэффициентов, кратных 3, и т. Д. Однако вы можете использовать функции, подобные этой чтобы уменьшить количество функций, которые вы должны написать. Один для простых шаблонов, один для четных / нечетных шаблонов, один для кратных троек и так далее. Зависит от того, насколько различны шаблоны и сколько памяти у вас есть для кода.