#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);