如何圆滑地画出函数y=x^2的图形,见笑^o^,请给出代码(10分)

  • 主题发起人 主题发起人 老Q
  • 开始时间 开始时间
没人回答?嫌分少?
 
我画的 sin 还比较平滑,y = x^2 不知道。
 
可不可以直接在窗体上画呢?
用FORM1。CANVAS直接画点或很短的线。。。。
递归调用画点子程序。不断的将X的值输入(子程序计算出Y值)就行了吧?
 
得把最近的两点连接起来
 
555,5...5...5...难道真的没有好的算法了吗?
 
好像是不好画,即使用tchart控件,用opengl的方法试试看,可能是可以的。
d5里面有这个东东吧
 
用参数法应该可以的。
令 y=x^2=t
则有
y=t;
x=sqrt(t);

使t递增,算出(x,y),再画点就平滑了。
如果图形不太好看就调整一下系数好了。
 
这个问题应该很简单,你可以定义一个区间(T1-T2),再定义步长STEP,步长如果设得小的话
所绘的图形就圆滑,如果大的话精度就差
因为Y=X^2

X:=T1;
Y:=X*X;
CANVAS.MOVETO(X,Y);
WHILE X<T2 DO
BEGIN
X:=X+STEP;
Y:=X*X;
CANVAS.LINETO(X,Y);
END;
X:=T2;
Y:=X*X;
CANVAS.LINETO(X,Y);

 
这个问题应该很简单,你可以定义一个区间(T1-T2),再定义步长STEP,步长如果设得小的话
所绘的图形就圆滑,如果大的话精度就差
因为Y=X^2

X:=T1;
Y:=X*X;
CANVAS.MOVETO(X,Y);
WHILE (X+STEP)<T2 DO
BEGIN
X:=X+STEP;
Y:=X*X;
CANVAS.LINETO(X,Y);
END;
X:=T2;
Y:=X*X;
CANVAS.LINETO(X,Y);
 
这个问题应该很简单,你可以定义一个区间(T1-T2),再定义步长STEP,步长如果设得小的话
所绘的图形就圆滑,如果大的话精度就差
因为Y=X^2

X:=T1;
Y:=X*X;
CANVAS.MOVETO(X,Y);
WHILE (X+STEP)<T2 DO
BEGIN
X:=X+STEP;
Y:=X*X;
CANVAS.LINETO(X,Y);
END;
X:=T2;
Y:=X*X;
CANVAS.LINETO(X,Y);
结束
 
替你贴完 :)

X:=T1;
Y:=X*X;
CANVAS.MOVETO(X,Y);
WHILE (X+STEP)&amp;lt;T2 DO
BEGIN
X:=X+STEP;
Y:=X*X;
CANVAS.LINETO(X,Y);
END;
X:=T2;
Y:=X*X;
CANVAS.LINETO(X,Y);
 
对,就是这样,那天不知怎么回事就是贴不上去
 
你们都只是看到固定步长,随着X的增加,Y会增加很快的,这样的曲线就不平滑了。
我建议在X小的时候用大步长,X大的时候用小步长。这样既可以兼顾画线质量, 又
可以兼顾运算速度。
 
接受答案了.
 
后退
顶部