uses graph,crt; var grDriver: Integer; grMode: Integer; matrix:array[1..2,1..3] of real; i:integer; a:real; b:integer; const obj:array[1..4,1..2,1..2] of real= ( ((10,10),(20,10)),((20,10),(20,20)),((20,20),(10,20)),((10,20),(10,10)) ); xc=320; yc=200;
procedure drobj(col:byte;ass:string); begin setcolor(col); for i:=1 to 4 do line( round(obj[i,1,1]*matrix[1,1]+obj[i,1,2]*matrix[1,2]+matrix[1,3]+xc), round(obj[i,1,2]*matrix[2,1]+obj[i,1,2]*matrix[2,2]+matrix[2,3]+yc), round(obj[i,2,1]*matrix[1,1]+obj[i,2,2]*matrix[1,2]+matrix[1,3]+xc), round(obj[i,2,2]*matrix[2,1]+obj[i,2,2]*matrix[2,2]+matrix[2,3]+yc) ); outtextxy(10,10,ass); end;
procedure domatrix(a1,a2,a3,a4,a5,a6:real); begin matrix[1,1]:=a1; matrix[1,2]:=a2; matrix[1,3]:=a3; matrix[2,1]:=a4; matrix[2,2]:=a5; matrix[2,3]:=a6; end;
begin grDriver := Detect; InitGraph(grDriver, grMode,'c:bpbgi'); domatrix(1,0,0,0,1,0); {нет преобразования} drobj(15,'Ishodnui'); readkey; drobj(0,'Ishodnui'); domatrix(1,0,10,0,1,10); {перенос с.к.} drobj(15,'Perenos s.k.'); readkey; drobj(0,'Perenos s.k.'); domatrix(5,0,0,0,5,0); {Масштабирование} drobj(15,'Masshtab'); readkey; drobj(0,'Masshtab'); domatrix(1,0,0,0,1,0); {Симметрия относительно оси Y} drobj(15,'Simmetria po y'); domatrix(-1,0,0,0,1,0); drobj(15,'Simmetria po y'); readkey; setfillstyle(solidfill,0); bar(0,0,getmaxx,getmaxy); repeat b:=(b+360-5) mod 360; a:=(b*pi)/180; domatrix(cos(a),-sin(a),0,sin(a),cos(a),0); drobj(15,'Povorot'); delay(1000); drobj(0,'Povorot'); until keypressed; CloseGraph; end.
--------------------
- Где я? - Во тьме. - В какой тьме? - Во тьме твоего мозга.