DymGeometrics 3.0
PascalABC.NET Addon
Download
>Includes
>
procedure gUpdate(fr,divisionexponent:integer);
>procedure expupdate(fr:integer);
>procedure particle(x,y:integer;force:real;angle:integer;cl:color);
>procedure dElip(x,y,l,l2:integer;a,freq:real;cl:color);
>procedure dLine(x,y,l:integer;a:real;cl:color;rec:integer);
>procedure dSqr(x,y,l:integer;a:real;cl:color);
>procedure dTrIs(x,y,l:integer;a,a1:real;cl:color);
>procedure dGraphTerm(x,y:integer);
>procedure dGraph(x,y:integer;valx,valad:real);
>procedure dlCube(x,y,l,d:integer;a,a1:real);
>procedure dlcTest(x,y,l:integer;a,freq:real);
>function dSin(a:real) : real;
>function dCos(a:real) : real;
>function dPer(a,b,c,d:real) : real;
>function dArea4(a,b:real) : real;
>function dArea3(a,b,c:real) : real;
>function dAreas(r:real) : real;
>function dLat3(a,b,angle:real) : real;
>function d3(a:real) : real;
>function dExp(a:real;b:integer) : real;
>function dFact(a:integer) : real;
>function dRoot(a,x:integer) : real;
>procedure update(fr:integer);
>procedure setBorder(height:integer);
>procedure clearparts();
>function dRandom(x,y:integer):real;
>Examples
>Particle example (Rain drop)
var i,j:integer;
n1,n2:integer;
begin
for j:=0 to 25 do begin
n1:=random(600);n2:=random(600);
for i:=0 to 1000 do
particle(n1,n2,1,round(drandom(0,360)),clblack);
expupdate(200);
end;
>Line Example (Photon bounce)
var x,y,a,i:integer;
l:integer;
begin
l:=60;a:=random(360);
setwindowsize(400,400);
dline(200,200,l,a,clBlack,1);
for i:=0 to 1000 do begin
dline(ev1,ev2,l,a,clBlack,1);
sleep(25);
if ev1>400 then a:=180-a;
if ev1<0 then a:=180-a;
if ev2>400 then a:=360-a;
if ev2<0 then a:=360-a;
redraw;
end;
>Line Example (Photon bounce)
var x,y,a,i,sa,sl:integer;
l,j,ks:integer;
rn:integer;
begin
setwindowsize(400,400);
lockdrawing;
for i:=0 to 360 do begin
clearwindow(clwhite);
dsqr(200,200,50,i,clBlack);
sleep(1);
redraw
end;
for i:=0 to 30 do begin
clearwindow(clwhite);
dlcube(200,200,50,i,0,0);
sleep(5);
redraw;
end;
for i:=0 to 360 do begin
clearwindow(clwhite);
dlcube(200,200,50,30,0,i);
sleep(5);
redraw
end;
for i:=0 to 10000 do begin
particle(200,200,random(1)+random(10000)/10000+random(10000)/10000+random(10000)/10000,random(360));
end;
update(100);
clearwindow(clwhite);
UnLockDrawing;
clearparts;
for i:=0 to 360 do begin
dElip(200,200,100,100,i,1,clBlack);
for j:=0 to 20 do particle(lv1,lv2,random(1000)/3000,(-180+random(360)));
sleep(round(i/30));
end;
update(50);
UnLockDrawing;
clearparts;
sleep(500);
clearwindow(clWhite);
for i:=-150 to 150 do begin
sleep(5);
dGraph(200+i,200,cos(i/10)*10,cos((i+1)/10)*10);
particle(200+i,round(200+cos(i/10)*10),i/100,(-90+random(180))+(-25+random(50)));
end;
update(150);
unlockdrawing;
sleep(500);
clearwindow(clWhite);
for i:=-150 to 150 do begin
sleep(5);
dGraph(200+i,200+50,-sqr(-i)/40,-sqr(-1-i)/40);
end;
sleep(500);
clearwindow(clWhite);
for i:=1 to 360 do begin
dlctest(200,200,120,round(i),i*1);
sleep(2);
end;
sleep(500);
clearwindow(clWhite);
l:=60;a:=random(360);
setwindowsize(400,400);
dline(200,200,l,a,clBlack,1);
for i:=0 to 45 do begin
dline(ev1,ev2,l,a,clBlack,1);
sleep(25);
if ev1>400 then a:=180-a;
if ev1<0 then a:=180-a;
if ev2>400 then a:=360-a;
if ev2<0 then a:=360-a;
redraw;
clearwindow(clwhite);
end;
lockdrawing();
//Cerc
for i:=0 to 360 do begin
delip(80,90,50,50,i,1,clblack);
end;
//Cerc cu spike
for i:=0 to 360 do begin
delip(300,90,80+round(sin(i)),80+round(sin(i)),i,1,clblack);
end;
for i:=0 to 360 do begin
delip(300,230,80,30,i,1,clblack);
end;
//Functii simple
dline(20,20,150,-5,clblack,1);
dSqr(70,180,100,25,clblack);
dlCube(150,140,40,-10,12,45);
dTrIs(140,310,90,25,25,clblack);
unlockdrawing();
sleep(500);
clearwindow(clWhite);
x:=200;y:=400;sa:=-90;sl:=80;
for j:=0 to 100 do begin
x:=200;y:=400;sa:=-90;sl:=80;
dline(x,y,0,sa,clBlack,1);
for i:=1 to 180 do begin
dline(ev1,ev2,round(sl/i),0-random(180),clBlack,1);
end;
end;
clearwindow(clWhite);
clearparts;
unlockdrawing;
textout(140,200,'DymGeometrics 2.3');
sleep(500);
end.
>Using dElip procedure
The procedure puts two points and one line at
> x+round(cos(a)*length1) & y+round(sin(a)*length2)
> x+round(cos(a+freq)*length1) & y+round(sin(a+freq)*length2)
Then draws a line between those two.
The frequency by default should be 1, but to generate
more advanced figures , it can be changed.
Example
http://www.lycee-moliere-madrid.org/Sciences/wp-content/uploads/2016/03/31012016-table-200-34-5.8-300x281.jpg
for i:=1 to 360 do begin
dlctest(200,200,120,round(i),i*1);
sleep(2);
end;
>Particle Example
Entire project
made by Cunev Dimitriy