IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Графика на паскале, Можно проверять работает
Wiktor123
сообщение 28.3.2010, 12:31
Сообщение #1


Пользователь


Группа: Собеседник
Сообщений: 21
Регистрация: 17.5.2009
Пользователь №: 21 706



Помогите составить блоксхему!!!

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.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wiktor123
сообщение 29.3.2010, 20:48
Сообщение #2


Пользователь


Группа: Собеседник
Сообщений: 21
Регистрация: 17.5.2009
Пользователь №: 21 706



Цитата(Wiktor123 @ 28.3.2010, 12:31) *

Помогите составить блоксхему!!!

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.

Блин хоть коменты остовляйте.

Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Tanker
сообщение 5.4.2010, 9:56
Сообщение #3


Пользователь


Группа: Активисты
Сообщений: 363
Регистрация: 26.11.2009
Пользователь №: 22 377



Это подфорум про Ассемблер...
В фоуме про Паскаль есть тема закрепленная про бок-схемы


--------------------
Успехов!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 20.5.2012, 23:31