Lansdscape
 
Waves
 


    Uses Virt_Memory,crt; {Eu mapiei um trapezio e subtrair dele uma altura que e dada pelo somatorio de varias funcoes de oscilacao harmonica, gerando uma sitense de Fourier Paulo R. T. Britto email : secneb@hotmail.com abritto@svn.com.br P.S.: Qualquer problema com o entendimento(nao acredito que voce tera algum) pode me contactar.E se sinta a vontade p/ dar o destino que voce bem entender ao codigo } Var buf1,buf2:pointer; pt,x,y,tz,t:real; q:integer; {uma funcao de cosseno comum de oscilacao } Function z(x,t:real;A,k,c:Real):real; Begin z:=((A*cos(pi*(k*(x-c*t))/180))); End; {da a altura aos pontos mapeados sobre o trapezio} Procedure Height(x,y,z:real;c:byte); Var Tx,Ty:integer; Begin Tx:=Round((x)); Ty:=Round((100+(q)*4)-z); Mem[s_virscr:320*ty+tx]:=c; End; Var dudx,dudy:real; lx,rx:real; f:real; Begin Asm Mov ax,013h Int 010h End; Getmem(buf1,64000); Cls(buf1,64000); S_virscr:=seg(buf1^); T:=1; While not(Keypressed) do Begin dudy:=(320-220)/20; {inclinacao das arestas } Lx:=100; Rx:=220; If mouseleft then f:=f+0.1; If mouseright then f:=f-0.1; For Q:=0 to 19 do Begin dudx:=(Rx-Lx)/20; { distancia entre um ponto e outro ao longo de x} x:=lx; pt:=t; While X<(Rx) do Begin {sintese de Fourier cada z(..) eh uma funcao cosseno} tz:=Round(z(x,q,2,-f,-2)+z(x,t,2,5,1)+z(x,t,1,4.5,1)){}; {mapea o ponto sobre o trapezio com a altura tz} Height(x,y,tz,2); x:=x+dudx; t:=t+12.2;{} End; t:=pt; Rx:=Rx+dudy; lx:=lx-dudy; T:=T+0.15; End; Move_to_video(Buf1); Cls(Buf1,64000);{} End;{} freemem(Buf1,64000); End. End.


Start page

1