увеличить множитель на основе индекса массива - PullRequest
0 голосов
/ 17 июня 2020

Мой 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. Вроде как синусоида.

1 Ответ

0 голосов
/ 17 июня 2020

Хорошо, ты можешь попробовать это. Должно работать:

if(i>= myArray.Length*0.75 && i<=myArray.Length*(0.75+0.25*0.5))
{
    #positive slope line equation for multiplierFactor
    multiplierFactor=1+((i+1-myArray.Length*0.75)/(myArray.Length*0.25*0.5))
}
else if(i>myArray.Length*(0.75+0.25*0.5))
{
    #negative slope line equation for multiplierFactor
    multiplierFactor=2-((i+1-myArray.Length*0.75)/(myArray.Length*0.25*0.5))
}
else
{
    multiplierFactor=1
}
...