为什么这段代码不会画抛物线?



为什么这段代码不会画抛物线?它尽可能简单 - 对于每个 x 使用给定函数计算 y。给定 y=x^2,我应该向下绘制面向抛物线的顶点在左上角,但它只绘制一些移位的点。

private void DrawParabole(Graphics g)
    {
        for (int x = 0; x < pictureBox1.Width; x++)
        {
            g.DrawRectangle(
                Pens.Black, 
                x,
                FY(x), 
                1, 
                1
             );
        }
    }
    private int FY(int x)
    {
        int y = A*x^2 + B*x + C;
        return y;
    }

您得到错误值/分散点的原因是因为您使用的是 XOR^ 运算符而不是 Math.Pow()

为了计算,假设A*x^2你必须使用 Math.Pow() 而不是 ^

int y = A*(Math.Pow(x, 2)) + B*x + C;
return y;

这应该为您解决它,如果它没有,那么使用它:

int y = A*(Math.Pow((double)x, 2D)) + B*x + C;
return y;

希望这有帮助!

如果你的代码是 C#,^ 是按位 XOR。请改用 Math.Pow()。

使用 MatthewRz 的更正数学:

    private int FY(int x)
    {
        int y = (int)(A * (Math.Pow(x, 2)) + B * x + C);
        return y;
    }

不过,您仍然只会看到点(因为每一步 Y 的变化都超过 X),请使用以下循环获取点之间的线:

    private void DrawParabole(Graphics g, int w)
    {
        for (int x = 0; x < w; x++)
        {
            g.DrawLine(
                Pens.Black,
                x,
                FY(x-1),
                x,
                FY(x));
        }
    }

相关内容

  • 没有找到相关文章

最新更新