Показать сообщение отдельно
  #1  
Старый 23.12.2012, 15:01
Аватар для Mp3
Mp3 Mp3 вне форума
Новичок
 
Регистрация: 05.03.2012
Сообщения: 82
Репутация: 10
Радость Графика в делфи

Всем привет.Дана программа рисующая параболу с векторами на ней.надо сделать так чтобы каждый вектор рисовался ток по активации кнопки(т.е. выбираю 1 вектор тыкаю, старт, и рисует ток его и т.д.) пытался делать все через RadioButton не вышло,помогите сделать так что бы заработало ну или подскажите как сделать,а то ничего не выходит(
Код:
procedure TForm1.onPaint(Sender: TObject);
Var  y_up, y_down,n,i:integer;
tau,x,y,v_x,v_y,w_x,W_y,v,w,w_tau,w_n,ro: real;
begin
x_origin:=Form1.Width div 2;
y_origin:=Form1.Height div 2;
x_left:=round (Form1.Width/20);
x_right:=round (Form1.Width-Form1.Width/20);
y_up:=round (Form1.Height/20);
y_down :=round (Form1.Height-Form1.Height/20);
n:=10;
x_step:=round ((x_right-x_left)/n);
y_step:=round ((y_down - y_up)/n);
x_origin := x_left + x_step * (n div 2);  //штрихи
y_origin := y_up + y_step * (n div 2);
with Form1.Canvas do
Begin
MoveTo (x_left, y_origin);
LineTo (x_right, y_origin);
MoveTo (x_origin, y_up);
LineTo (x_origin, y_down);
for i:=1 to n-1 do
Begin
MoveTo (x_left+x_step*i, y_origin-3);
LineTo (x_left+x_step*i, y_origin+3);
MoveTo (x_origin-3, y_up+y_step*i);
LineTo (x_origin+3, y_up+y_step*i);
end;

MoveTo (x_right, y_origin);
LineTo (x_right-5, y_origin-5);
MoveTo (x_right, y_origin);
LineTo (x_right-5, y_origin+5);
MoveTo (x_origin, y_up);
LineTo (x_origin+5, y_up+5);
MoveTo (x_origin, y_up);
LineTo (x_origin-5, y_up+5);
TextOut (x_right-5, y_origin+5, 'x'); //  название
TextOut (x_origin-10,y_up+5, 'y');
TextOut(x_origin - TextWidth('0') - 3, y_origin - TextHeight('0') - 3, '0');
for  i:=1 to 1000 do
begin
tau:=i/50;
Form1.Canvas.Pixels[round(x_origin+(7*tau*tau+1)*x_step), round(y_origin+(5*tau)*y_step)]:=clBlue;
end;
end;
end;

procedure vector(x0,y0,abs_r:integer;gamma:real) ;
Var alpha:real;
 yk, xk,x1,y1,x2,y2,delta:integer;
begin
with Form1.Canvas do
begin
xk:=round (x0+abs_r*cos(gamma));
yk:=round (y0-abs_r*sin(gamma));
MoveTo (x0,y0);
LineTo (xk,yk);
alpha:=Pi/6;
delta:=10;
x1:=round (xk-delta*(cos(alpha)*cos(gamma)+sin(alpha)*sin(gamma)));
y1:=round (yk+delta*(cos(alpha)*sin(gamma)-sin(alpha)*cos(gamma)));
x2:=round (xk-delta*(cos(alpha)*cos(gamma)-sin(alpha)*sin(gamma)));
y2:=round (yk+delta*(cos(alpha)*sin(gamma)+sin(alpha)*cos(gamma)));
MoveTo(xk,yk);
LineTo(x1,y1);
Moveto(xk,yk);
LineTo(x2,y2);

end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
const
q=0.005 ;
w=pi/2;
e=pi/4;
Var i,j,x0,yo:integer;
track: array [1..10000] of Tpoint;
begin
with Form1.Canvas do
begin
 Label1.Caption:=floattostr(t);
 t:=t+1/1000;
 i:=round (1000*t);
 track[i].x:=round((7*t*t+1)*x_step);
 track[i].y:=round((-5*t)*y_step);
 begin
Pen.Color:=clbtnFace;
Vector (x_origin+track[i-1].x,y_origin-track [i-1].y,round(v_x),0);
Vector(x_origin+track[i-1].x,y_origin-track[i-1].y,abs(round(v_y)),3*w);
Vector(x_origin+track[i-1].x,y_origin-track [i-1].y,round(v_x),e); 
Vector(x_origin+track[i-1].x,y_origin-track [i-1].y,round(v_x),7*e); 
Pen.Color:=clBlack;
Vector(x_origin+track[i].x,y_origin-track [i].y,round(v_x),0);
Vector(x_origin+track[i].x,y_origin-track [i].y,round(v_x),pi/4);
Vector(x_origin+track[i].x,y_origin-track [i].y,round(v_x),7*e);
Vector(x_origin+track[i].x,y_origin-track[i].y,abs(round(v_y)),3*w);
MoveTo (x_left, y_origin);
LineTo (x_right, y_origin);
Pixels[round(x_origin+(7*(t-q)*(t-q)+1)*x_step), round(y_origin+(5*(t-q))*y_step)]:=clBlue;
end;
end;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
t:=0;
table;
Form1.Timer1.Enabled:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Timer1.Enabled:=False;
end;

end.
Админ: Учимся пользоваться тегами по их назначению!

p.s. заранее спасибо
Ответить с цитированием