Здраствуйте. Подскажите что нибудь или помогите советами с такой задачкой !Написать программу построения 2D-графика функции, заданной параметрически.! Даже не знаю с чего начать.Может кто даст ссылки интересные.
Помогите усовершенствовать интерфейс программы с возможностью позволяющий изменять масштаб, сдвигать окно на бумаге. Также должна быть предусмотрена возможность выводить координаты курсора мыши. Предлагайте советы.Буду очень благодарен.
var Form1: TForm1; Wx,Wy,W1,W2: real; x1,y1,x2,y2:real; x,y,t,h:real; I1,J1,I2,J2,n,j:integer; s:string; implementation
{$R *.dfm} {------------------------------------------------------------------------------} function Fx(t:real):real; begin Fx:=Sin(Wx*t+W1) end; {------------------------------------------------------------------------------} function Fy(t:real):real; begin Fy:=Sin(Wy*t+W2) end; {------------------------------------------------------------------------------} function II(x:real):integer; begin II:=I1+Trunc((x-x1)*(I2-I1)/(x2-x1)) end; {------------------------------------------------------------------------------} function JJ(x:real):integer; begin JJ:=J1+Trunc((y-y1)*(J2-J1)/(y2-y1)) end; {------------------------------------------------------------------------------} procedure DrawGraphic(Wx:real;Wy:real;W1:real;W2:real); var i:integer; t:real; begin with Form1.Image1,Form1.Image1.Canvas do begin Rectangle(0,0,Width,Height); MoveTo(II(x1),JJ(0));LineTo(II(x2),JJ(0)); MoveTo(II(0),JJ(y1));LineTo(II(0),JJ(Y2));
for i:=trunc(x1) to trunc(x2) do begin //LineTo(II(i),JJ(0)); {cena deleniya} str(i,s); TextOut(II(i-0.05),JJ(0.1),s) end; for j:=trunc(y1) to trunc(y2) do begin if j=0 then else begin str(-j,s); //PutPixel(II(0),JJ(j),15); TextOut(II(0.1),JJ(j),s) end end; TextOut(II(x2-0.03),JJ(0.1),'x'); TextOut(II(-0.2),JJ(y1-0.18),'y');
t:=0;x:=Fx(t);y:=Fy(t); MoveTo(II(x),JJ(y)); for i:=1 to 5*n do begin t:=t+h;x:=Fx(t); y:=Fy(t); LineTo(II(x),JJ(y)) end; end
end; {------------------------------------------------------------------------------} procedure TForm1.FormCreate(Sender: TObject); begin n:=200; x1:=-1.2; y1:=-1.2; x2:=1.2;y2:=1.2;
I1:=0;J1:=0; I2:=Image1.Width;J2:=Image1.Height;
h:=2*Pi/n; Wx:=2; Wy:=4;W1:=6;W2:=3; DrawGraphic(Wx,Wy,w1,w2); end; {------------------------------------------------------------------------------} procedure TForm1.Button1Click(Sender: TObject); begin if Cd1.Execute=true then Form1.Image1.Canvas.Pen.Color:=cd1.Color; DrawGraphic(Wx,wy,w1,w2); end; {------------------------------------------------------------------------------}
procedure TForm1.Button2Click(Sender: TObject); begin if Cd1.Execute=true then Form1.Image1.Canvas.Brush.Color:=cd1.Color; DrawGraphic(Wx,wy,w1,w2); end; {------------------------------------------------------------------------------} procedure TForm1.SpinEdit1Change(Sender: TObject); begin Wx:=SpinEdit1.Value; DrawGraphic(Wx,wy,w1,w2); end; {------------------------------------------------------------------------------} procedure TForm1.SpinEdit2Change(Sender: TObject); begin Wy:=SpinEdit2.Value; DrawGraphic(Wx,wy,w1,w2) end; {------------------------------------------------------------------------------} procedure TForm1.SpinEdit3Change(Sender: TObject); begin W1:=SpinEdit3.Value; DrawGraphic(Wx,wy,w1,w2) end; {------------------------------------------------------------------------------} procedure TForm1.SpinEdit4Change(Sender: TObject); begin W2:=SpinEdit4.Value; DrawGraphic(Wx,wy,w1,w2) end; {------------------------------------------------------------------------------}
end.
!
Теги ! klem4
Egor Vladimirovich
24.04.2007 16:14
klem4 сорри спешил. Масштаб и координаты мыши сделал.Осталось сделать движение окна по бумаге.(image1) Есть какие нибудь соображения?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.