Генерировать векторы с заданной степенью многочлена и списком коэффициентов

#c# #unity3d

#c# #unity3d

Вопрос:

Я использую Unity и создаю генератор, в котором пользователь вводит степень полинома плюс все его коэффициенты. Например, я могу иметь степень 3 и [1,2,3,4] , которая должна быть 1x^3 2x^2 3x^1 4x^0 . Вот что у меня есть:

         int[] coef = TitleToGame.coeficients;
        for (int x = -10; x <= 10; x  )
        {
            float y = 0;
            for (int i = 0; i < TitleToGame.degree - 1; i  )
            {
                if (i == 0)
                {
                    y = coef[TitleToGame.degree] * Mathf.Pow(x, i);
                }
                else
                {
                    y  = coef[TitleToGame.degree - i] * Mathf.Pow(x, i);
                }
                Instantiate(block, new Vector3(x, y, 5), Quaternion.identity);
            }
        }
 

Я пытаюсь сгенерировать блоки из домена от -10 до 10. Однако результат выглядит немного странным.

Степень 3 с [1,1,1,1] показывает параболу с дополнительной линейной линией: введите описание изображения здесь

Степень 2 показывает линейную линию (с дополнительной нежелательной плоской линией), 1 ничего не показывает, а 4 также показывает параболу. Что я делаю не так?

Ответ №1:

Вы вызываете Instantiate во внутреннем цикле for, когда я предполагаю, что вы хотите вызвать его во внешнем цикле (от -10 до 10).

Кроме того, вам, вероятно, не нужен этот оператор if-else . Обе строки выполняют одно и то же.

 for (int i = 0; i < TitleToGame.degree - 1; i  )
{
    y  = coef[TitleToGame.degree - i] * Mathf.Pow(x, i);
}
Instantiate(block, new Vector3(x, y, 5), Quaternion.identity);