Помогите составить блоксхему!!!
program D;
uses crt,graph;
type Point2D=record {визначення структури 2D точки}
x,y,p:extended;
end;
Matrix=array [0..2,0..2] of extended;
var x0,y0,mx,my,focus:extended;
procedure GetXY(var M:Matrix; var p:Point2D; var x,y:integer); {процедура перетворення координат}
var d:Point2D; {із користувацьких в екранні}
k:extended;
begin
d.x:=(p.x*M[0,0]+p.y*M[0,1]+p.p*M[0,2]);
d.y:=(p.x*M[1,0]+p.y*M[1,1]+p.p*M[1,2]);
d.p:=(p.x*M[2,0]+p.y*M[2,1]+p.p*M[2,2]);
d.x:=d.x/d.p;
d.y:=d.y/d.p;
{k:=focus/(p.z+focus);}
focus:=50;
x:=round(x0+mx*d.x*focus);
y:=round(y0-my*d.y*focus);
end;
procedure Line2D(var M:Matrix; p1,p2:Point2d); {процедура малювання 2-мірної лінії}
var x1,y1,x2,y2:integer;
begin
GetXY(M,p1,x1,y1);
GetXY(M,p2,x2,y2);
line(x1,y1,x2,y2);
end;
procedure Mnozhim(var M:Matrix; M1,M2:Matrix); {процедура множення двох матриць}
var
x,y,i:integer;
begin
for x:=0 to 2 do
for y:=0 to 2 do
begin
M[x,y]:=0;
for i:=0 to 2 do M[x,y]:=M[x,y]+M1[i,y]*M2[x,i];
end;
end;
var Mu,Po:Matrix;
T:array [0..3] of Point2D;
x,y:integer;
Begin
x:=detect;
initgraph(x,y,'');
focus:=50; {ініціалізація початкових параметрів користувацької системи координат}
mx:=1;
my:=1;
x0:=getmaxx div 2;
y0:=getmaxy div 2;
T[0].x:=4; T[0].y:=0; T[0].p:=1; {встановлення координат точок фігури}
T[1].x:=0; T[1].y:=1; T[1].p:=1;
T[2].x:=0; T[2].y:=4; T[2].p:=1;
T[3].x:=-4; T[3].y:=0; T[3].p:=1;
SetColor(Green);
OutText('Obertannia... press any key...'); {блок обертання навколо початку координат}
readkey;
SetColor(White);
Mu[0,0]:=1; Mu[0,1]:=0; Mu[0,2]:=0;
Mu[1,0]:=0; Mu[1,1]:=1; Mu[1,2]:=0;
Mu[2,0]:=0; Mu[2,1]:=0; Mu[2,2]:=1;
Po[0,0]:=cos(Pi/100); Po[0,1]:=sin(Pi/100); Po[0,2]:=0; {встановлення матриці обертання}
Po[1,0]:=-sin(Pi/100); Po[1,1]:=cos(Pi/100); Po[1,2]:=0;
Po[2,0]:=0; Po[2,1]:=0; Po[2,2]:=1;
while (not keypressed) do
begin
cleardevice;
SetColor(Green);
Line(0,getmaxy div 2,getmaxx,getmaxy div 2); {малювання системи координат}
Line(getmaxx div 2,0,getmaxx div 2,getmaxy);
Line(getmaxx,getmaxy div 2,getmaxx-10,(getmaxy div 2)+5);
Line(getmaxx,getmaxy div 2,getmaxx-10,(getmaxy div 2)-5);
Line(getmaxx div 2,0,(getmaxx div 2)-5,10);
Line(getmaxx div 2,0,(getmaxx div 2)+5,10);
SetColor(White);
Line2D(Mu,t[0],t[1]); {малювання фігури}
Line2D(Mu,t[2],t[0]);
Line2D(Mu,t[3],t[1]);
Line2D(Mu,t[3],t[2]);
Mnozhim(Mu,Po,Mu); {множення матриць}
Delay(1000);
end;
while keypressed do readkey;
Cleardevice;
SetColor(Green);
OutText('Zvushennia... press any key...'); {блок звуження фігури}
readkey;
SetColor(White);
Mu[0,0]:=1; Mu[0,1]:=0; Mu[0,2]:=0;
Mu[1,0]:=0; Mu[1,1]:=1; Mu[1,2]:=0;
Mu[2,0]:=0; Mu[2,1]:=0; Mu[2,2]:=1;
Po[0,0]:=0.8; Po[0,1]:=0; Po[0,2]:=0; {матриця звуження}
Po[1,0]:=0; Po[1,1]:=0.8; Po[1,2]:=0;
Po[2,0]:=0; Po[2,1]:=0;
Po[2,2]:=1;
while (not keypressed) do
begin
cleardevice;
SetColor(Green);
Line(0,getmaxy div 2,getmaxx,getmaxy div 2);
Line(getmaxx div 2,0,getmaxx div 2,getmaxy);
Line(getmaxx,getmaxy div 2,getmaxx-10,(getmaxy div 2)+5);
Line(getmaxx,getmaxy div 2,getmaxx-10,(getmaxy div 2)-5);
Line(getmaxx div 2,0,(getmaxx div 2)-5,10);
Line(getmaxx div 2,0,(getmaxx div 2)+5,10);
SetColor(White);
Line2D(Mu,t[0],t[1]);
Line2D(Mu,t[2],t[0]);
Line2D(Mu,t[3],t[1]);
Line2D(Mu,t[3],t[2]);
Mnozhim(Mu,Po,Mu);
Delay(5000);
end;
while keypressed do readkey;
Cleardevice;
SetColor(Green);
OutText('Vidobrashennia... press any key...'); {блок відображення відносно осі Z}
readkey;
SetColor(White);
Mu[0,0]:=1; Mu[0,1]:=0; Mu[0,2]:=0;
Mu[1,0]:=0; Mu[1,1]:=1; Mu[1,2]:=0;
Mu[2,0]:=0; Mu[2,1]:=0; Mu[2,2]:=1;
Po[0,0]:=1; Po[0,1]:=0; Po[0,2]:=0; {матриця відображення відносно осі Z}
Po[1,0]:=0; Po[1,1]:=-1; Po[1,2]:=0;
Po[2,0]:=0; Po[2,1]:=0; Po[2,2]:=1;
while (not keypressed) do
begin
cleardevice;
SetColor(Green);
Line(0,getmaxy div 2,getmaxx,getmaxy div 2);
Line(getmaxx div 2,0,getmaxx div 2,getmaxy);
Line(getmaxx,getmaxy div 2,getmaxx-10,(getmaxy div 2)+5);
Line(getmaxx,getmaxy div 2,getmaxx-10,(getmaxy div 2)-5);
Line(getmaxx div 2,0,(getmaxx div 2)-5,10);
Line(getmaxx div 2,0,(getmaxx div 2)+5,10);
SetColor(White);
Line2D(Mu,t[0],t[1]);
Line2D(Mu,t[2],t[0]);
Line2D(Mu,t[3],t[1]);
Line2D(Mu,t[3],t[2]);
Mnozhim(Mu,Po,Mu);
Delay(3000);
end;
while keypressed do readkey;
Cleardevice;
SetColor(Green);
OutText('Zmina mashtabu... press any key...'); {блок зміни масштабу}
readkey;
SetColor(White);
Mu[0,0]:=1; Mu[0,1]:=0; Mu[0,2]:=0;
Mu[1,0]:=0; Mu[1,1]:=1; Mu[1,2]:=0;
Mu[2,0]:=0; Mu[2,1]:=0; Mu[2,2]:=1;
Po[0,0]:=0.95; Po[0,1]:=0; Po[0,2]:=0; {матриця зміни масштабу}
Po[1,0]:=0; Po[1,1]:=0.95; Po[1,2]:=0;
Po[2,0]:=0; Po[2,1]:=0; Po[2,2]:=1;
while (not keypressed) do
begin
cleardevice;
SetColor(Green);
Line(0,getmaxy div 2,getmaxx,getmaxy div 2);
Line(getmaxx div 2,0,getmaxx div 2,getmaxy);
Line(getmaxx,getmaxy div 2,getmaxx-10,(getmaxy div 2)+5);
Line(getmaxx,getmaxy div 2,getmaxx-10,(getmaxy div 2)-5);
Line(getmaxx div 2,0,(getmaxx div 2)-5,10);
Line(getmaxx div 2,0,(getmaxx div 2)+5,10);
SetColor(White);
Line2D(Mu,t[0],t[1]);
Line2D(Mu,t[2],t[0]);
Line2D(Mu,t[3],t[1]);
Line2D(Mu,t[3],t[2]);
Mnozhim(Mu,Po,Mu);
Delay(5000);
end;
while keypressed do readkey;
closegraph;
End.
Это подфорум про Ассемблер...
В фоуме про Паскаль есть тема закрепленная про бок-схемы
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)