home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ray Tracing Box
/
RAY_CD.mdf
/
raytrace
/
hfg
/
waves.pas
< prev
Wrap
Pascal/Delphi Source File
|
1994-01-11
|
3KB
|
101 lines
{ 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;