为什么这段代码不会绘制抛物线?它尽可能简单 - 对于每个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;
}
答案 0 :(得分:4)
您获取错误值/散点的原因是因为您使用的是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;
希望这有帮助!
答案 1 :(得分:3)
如果您的代码是C#,则^是按位异或。请改用Math.Pow()。
答案 2 :(得分:0)
使用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));
}
}