home *** CD-ROM | disk | FTP | other *** search
- { Programm waves.pas erzeugt ein TGA-File }
- { der Größe 640x 480 Pix. für den Einsatz }
- { in POV-Raytracing-Heightfields. }
- { TURBO-PASCAL 6.0 }
- { Autor: Dr. Rudolf Ehrler für mc }
- { Name der zu erzeugenden Datei muß als }
- { Parameterstring ohne Extension übergeben}
- { werden }
-
- PROGRAM waves;
-
- USES DOS,CRT;
-
- VAR
- xmax,ymax : WORD; { Auflösung }
- xfreq,yfreq : DOUBLE; { Frequenzen }
- xphase,yphase: DOUBLE; {Phasenverschiebung}
- xamp,yamp : DOUBLE; {Amplituden }
-
-
- x,y,z : WORD;
- zreal,dx,dy : DOUBLE;
-
- filename :STRING;
- tgafile :FILE OF BYTE;
- i,k :INTEGER;
- bvar1,bvar2 : BYTE;
-
- BEGIN
- clrscr;
- writeln(' WAVES');
- writeln(' =====');
- gotoxy(1,5);
- writeln('Wellengenerator',
- ' erzeugt TGA-File zum Einsatz',
- ' in POV-Heightfields');
- filename:=paramstr(1);
- filename:=filename+'.tga';
- assign(tgafile,filename);
- (*$I-*) rewrite(tgafile); (*$I+*)
- i:=ioresult;
- IF i<>0 THEN BEGIN
- writeln('TGA-Datei ',filename,
- ' kann nicht geöffnet werden...');
- writeln('Aufruf: waves dateiname');
- delay(2000);
- halt
- END;
- { 18 BYTE Header }
- bvar1:=2;
- bvar2:=0;
- xmax:=640;
- ymax:=480;
- { hier kann experimentiert werden! }
- xfreq:=3.5;
- yfreq:=5.5;
- xphase:=0.0;
- yphase:=0.0;
- xamp:=0.6;
- yamp:=0.3;
- { Header wird geschrieben }
- x:=xmax-1;
- dx:=2*pi/x;
- y:=ymax-1;
- dy:=2*pi/y;
- write(tgafile,bvar2,bvar2,bvar1);
- FOR i:=1 TO 9 DO write(tgafile,bvar2);
- bvar1:=xmax MOD 256;
- bvar2:=xmax DIV 256;
- write(tgafile,bvar1,bvar2);
- bvar1:=ymax MOD 256;
- bvar2:=ymax DIV 256;
- write(tgafile,bvar1,bvar2);
- bvar1:=$18;bvar2:=$20;
- write(tgafile,bvar1,bvar2);
- x:=xmax-1;
- dx:=2*pi/x;
- y:=ymax-1;
- dy:=2*pi/y;
- writeln('TGA-Datei ',filename,
- ' wird geschrieben');
- gotoxy(1,10);
- writeln('Zeilen: ',y:6);
- FOR i:=0 TO y DO BEGIN
- gotoxy(1,20);
- writeln('Zeilen......',i:6);
- FOR k:=0 TO x DO BEGIN
- zreal:=xamp*(sin(xfreq*dx*k+xphase)
- +yamp*sin(yfreq*dy*i+yphase));
- z:=round(zreal*32767/
- (xamp+yamp))+32767;
- bvar2:=0;
- write(tgafile,bvar2);
- bvar1:=z DIV 256;
- bvar2:=z MOD 256;
- write(tgafile,bvar2,bvar1);
- END;
- END;
- close(tgafile);
- END.
- END;