首页 > 解决方案 > 生成给定多项式次数和系数列表的向量

问题描述

我正在使用 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 生成块。但是,结果看起来有点古怪。

带有 [1,1,1,1] 的 3 阶显示带有额外线性线的抛物线: 在此处输入图像描述

2 级显示一条直线(带有多余的不需要的平线),1 级不显示任何内容,4 级也显示一条抛物线。我究竟做错了什么?

标签: c#unity3d

解决方案


当我假设您想在外部循环(从-10 到 10)中调用它时,您正在内部 for 循环中调用 Instantiate。

此外,您可能不需要那个 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);

推荐阅读