написал прогу, но что-то плохо вращает она. Вращает в TTimer. Подскажите пожалуйста Code: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan, Buttons, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; XPManifest1: TXPManifest; BitBtn1: TBitBtn; Timer1: TTimer; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; Button5: TButton; Button6: TButton; procedure Button1Click(Sender: TObject); procedure FormPaint(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure BitBtn1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; dx:integer; implementation {$R *.dfm} type vect=array[1..8,1..4] of real; vect2=array[1..12] of TPoint; matr=array[1..4,1..4] of real; var a: vect= ((300,270,0,1),(300,200,0,1),(360,200,0,1),(360,270,0,1), (400,370,0,1),(400,300,0,1),(460,300,0,1),(460,370,0,1)); paralld: vect2; i,j,k:integer; x,y,z,x2,y2,z2,fi:real; b:matr; v:vect; procedure TForm1.FormPaint(Sender: TObject); begin form1.Canvas.Pen.Color:=cllime; canvas.MoveTo(300,200); canvas.LineTo(300,3); canvas.TextOut(305,3,'Z'); canvas.MoveTo(300,200); canvas.LineTo(500,200); canvas.TextOut(500,205,'Y'); canvas.MoveTo(300,200); canvas.LineTo(150,350); canvas.TextOut(147,350,'X'); end; procedure par(var a:vect); begin form1.canvas.MoveTo(round(a[1,1]),round(a[1,2])); form1.canvas.LineTo(round(a[2,1]),round(a[2,2])); form1.canvas.MoveTo(round(a[2,1]),round(a[2,2])); form1.canvas.LineTo(round(a[3,1]),round(a[3,2])); form1.canvas.MoveTo(round(a[3,1]),round(a[3,2])); form1.canvas.LineTo(round(a[4,1]),round(a[4,2])); form1.canvas.MoveTo(round(a[4,1]),round(a[4,2])); form1.canvas.LineTo(round(a[1,1]),round(a[1,2])); form1.canvas.MoveTo(round(a[1,1]),round(a[1,2])); form1.canvas.LineTo(round(a[5,1]),round(a[5,2])); form1.canvas.MoveTo(round(a[2,1]),round(a[2,2])); form1.canvas.LineTo(round(a[6,1]),round(a[6,2])); form1.canvas.MoveTo(round(a[3,1]),round(a[3,2])); form1.canvas.LineTo(round(a[7,1]),round(a[7,2])); form1.canvas.MoveTo(round(a[4,1]),round(a[4,2])); form1.canvas.LineTo(round(a[8,1]),round(a[8,2])); form1.canvas.MoveTo(round(a[5,1]),round(a[5,2])); form1.canvas.LineTo(round(a[6,1]),round(a[6,2])); form1.canvas.MoveTo(round(a[6,1]),round(a[6,2])); form1.canvas.LineTo(round(a[7,1]),round(a[7,2])); form1.canvas.MoveTo(round(a[7,1]),round(a[7,2])); form1.canvas.LineTo(round(a[8,1]),round(a[8,2])); form1.canvas.MoveTo(round(a[8,1]),round(a[8,2])); form1.canvas.LineTo(round(a[5,1]),round(a[5,2])); end; procedure TForm1.Timer1Timer(Sender: TObject); begin if radiobutton1.Checked=true then begin fi:=pi/24; b[1,1]:=1;b[1,2]:=0;b[1,3]:=0;b[1,4]:=0; b[2,1]:=0;b[2,2]:=cos(fi);b[2,3]:=sin(fi);b[2,4]:=0; b[3,1]:=0;b[3,2]:=-sin(fi);b[3,3]:=cos(fi);b[3,4]:=0; b[4,1]:=0;b[4,2]:=0;b[4,3]:=0;b[4,4]:=1; for i:=1 to 8 do for j:=1 to 4 do begin v[i,j]:=0; for k:=1 to 4 do v[i,j]:=v[i,j]+a[i,k]*b[k,j]; a[i,j]:=v[i,j]; end; form1.Refresh; par(a); end; if radiobutton2.Checked=true then begin fi:=pi/24; b[1,1]:=cos(fi);b[1,2]:=0;b[1,3]:=-sin(fi);b[1,4]:=0; b[2,1]:=0;b[2,2]:=1;b[2,3]:=0;b[2,4]:=0; b[3,1]:=sin(fi);b[3,2]:=0;b[3,3]:=cos(fi);b[3,4]:=0; b[4,1]:=0;b[4,2]:=0;b[4,3]:=0;b[4,4]:=1; for i:=1 to 8 do for j:=1 to 4 do begin v[i,j]:=0; for k:=1 to 4 do v[i,j]:=v[i,j]+a[i,k]*b[k,j]; a[i,j]:=v[i,j]; end; form1.Refresh; par(a); end; if radiobutton3.Checked=true then begin fi:=pi/24; b[1,1]:=cos(fi);b[1,2]:=sin(fi);b[1,3]:=0;b[1,4]:=0; b[2,1]:=-sin(fi);b[2,2]:=cos(fi);b[2,3]:=0;b[2,4]:=0; b[3,1]:=0;b[3,2]:=0;b[3,3]:=1;b[3,4]:=0; b[4,1]:=0;b[4,2]:=0;b[4,3]:=0;b[4,4]:=1; for i:=1 to 8 do for j:=1 to 4 do begin v[i,j]:=0; for k:=1 to 4 do v[i,j]:=v[i,j]+a[i,k]*b[k,j]; a[i,j]:=v[i,j]; end; form1.Refresh; par(a); end; end; procedure TForm1.Button1Click(Sender: TObject); begin //form1.Refresh; j:=1; par(a); end; procedure TForm1.Button2Click(Sender: TObject); begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]-j; a[i,2]:=a[i,2]; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; procedure TForm1.Button3Click(Sender: TObject); begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]; a[i,2]:=a[i,2]+j; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; procedure TForm1.Button4Click(Sender: TObject); begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]+j; a[i,2]:=a[i,2]-j; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; procedure TForm1.Button5Click(Sender: TObject); begin timer1.Enabled:=false; end; procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin case key of '1':begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]-j; a[i,2]:=a[i,2]+j; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; '2':begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]; a[i,2]:=a[i,2]+j; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; '3':begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]+j; a[i,2]:=a[i,2]+j; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; '4':begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]-j; a[i,2]:=a[i,2]; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; '5':begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]; a[i,2]:=a[i,2]; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; '6':begin j:=1; for i:=1 to 27 do begin a[i,1]:=a[i,1]+j; a[i,2]:=a[i,2]; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; '7':begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]-j; a[i,2]:=a[i,2]-j; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; '8':begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]; a[i,2]:=a[i,2]-j; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; '9':begin j:=1; for i:=1 to 8 do begin a[i,1]:=a[i,1]+j; a[i,2]:=a[i,2]-j; a[i,3]:=a[i,3]; end; Form1.Refresh; par(a); j:=j+2; end; end; end; procedure TForm1.BitBtn1Click(Sender: TObject); begin form1.Close; end; procedure TForm1.Button6Click(Sender: TObject); begin timer1.Enabled:=true; end; end.
че не понятно? в TTimer идет перемножение матриц. Так вот из-за этого должно происходить вращение, а оно не происходит. Почему???
тс, если хочешь получить ответ - относись с уважением к публике. если тебе начхать на тех, кто может тебе помочь, то вполне резонно ожидать такое же отношение к тебе...