delphi下如何画cos函数的图形(100分)

  • 主题发起人 主题发起人 rever2000
  • 开始时间 开始时间
R

rever2000

Unregistered / Unconfirmed
GUEST, unregistred user!
如上
主要是想绘制cos函数的图形,但找不到相关的函数
不知那位有好的方法。
谢谢
 
有cos函数的啊,你用描点法画出来就行了
 
描点的方法对图形精度有要求,我这里cos函数画的周期要很长
我希望在delphi上找到更好的方法。
 
给你一个简单的程序吧,看看你指的“很长的周期”可不可以满足。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Button1: TButton;
procedure FormPaint(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure DrawCoor;
procedure DrawCos;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.DrawCoor;
begin
With Canvas do begin
MoveTo(0,Trunc(Height/2));
LIneTo(Width,Trunc(Height/2));
MoveTo(Trunc(Width/2),0);
LIneTo(Trunc(Width/2),Height);
end;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
DrawCoor;
DrawCos;
end;

procedure TForm1.DrawCos;
var
I : integer;
Y : integer;
begin
for I := -Trunc(Width) to Width do begin
Y := Trunc(StrToFloat(Edit1.Text) * Cos(StrToFloat(Edit2.Text)*I));
if I = 1 then Canvas.MoveTo(I + Trunc(Width/2),Y + Trunc(Height/2)) else Canvas.LineTo(I + Trunc(Width/2),Y+ Trunc(Height/2));
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Refresh;
end;

end.

 
>>描点的方法对图形精度有要求,我这里cos函数画的周期要很长
>>我希望在delphi上找到更好的方法。
你要输出的坐标轴有多长?比方说,你要输出 0 - 2 * pi 范围的图像,而坐标轴
只有5000个像素,那么,每一个像素对应的点就是 2 * pi / 5000 * x,你只要计算
这 5000 个点对应的 Cos 值不就行了?
程序我就不写了,其实挺简单的。
BTW:如果想制作一个万能函数图像显示程序,应该使用 RxLib 的 Parse.pas 的xx类。
(记不清了),方法同上。
 
是呀,无论周期有多长,屏幕的像素是有限的呀!

你说的“周期长”是不是循环一次的x坐标较大?你可以模仿“示波器”,将x坐标压缩,
也就是说,无论周期有多长,你都在一定的区域里显示一个周期的图形。然后,必要时
再将部分图形放大或按原比例显示(可以设置这样一个功能)。

你看我的建议如何?
 
提问者:
如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
请认真阅读大富翁论坛规则说明 http://www.delphibbs.com/delphibbs/rules.asp
 
to rever2000 :
我估计你一定会画Sin曲线,是吧???因为Sin曲线的例子很多,Cos曲线就
不会了么???很简单的!!!Sqr(Sin(x))+Sqr(Cos(x))=1,难道你忘记了么???
既然知道了Sin(x),Cos(x)还不知道么???
也许你真的不知道Sin曲线,好的,我改日贴来.
 
Teechart应该可以吧
 
潭浩强的pascal书上有例子 找一本看看吧
 
多人接受答案了。
 
后退
顶部