Мой iq недостаточно высок, чтобы придумать формулу для этого. Скажем, у меня есть массив из 200 элементов. У меня есть установленный множитель, с которым я умножаю каждый элемент массива в for
l oop.
public float[] myArray = new float[200];
public float multiplier = 150;
public float multiplierFactor = 2;
public void enhance()
{
for(int i = 0; i < myArray.Length; i++)
{
if(i > myArray.Length * 0.75f)
{
// ... what to do here to multiplierFactor ...
}
myArray[i] *= (multiplier * multiplierFactor);
}
}
Что я хотел бы сделать, это: вычислить multiplierFactor, когда 'i' достиг определенной точки в массиве (например, (int)(i > myArray.Length * 0.75f)
), чтобы начать увеличивать multiplierFactor от исходного значения 1, go до указанного максимального значения (например, multiplierFactor=2
, поэтому он идет от 1 до 2 или любого указанного значения), затем после достижения максимальной точки (например, 2) начните уменьшать множитель и go обратно к исходному значению по левым индексам массива. Таким образом, в последнем элементе multiplierFactor снова возвращается к исходному значению 1. Вроде как синусоида.