User:Wfpokorny/DensityFile/DepthMap64BitDf3RsltStoreExample
Jump to navigation
Jump to search
A 10x10 orthogonal, 64 bit, depth map using a few arraycoupleddf3s.inc macros.
The example prints trace(), vlength, depth values. The values are then stored in a df3 file after which a function is used to access and print the stored values. Lastly, it reads the created df3 into a second array and then writes a duplicate df3 file.
//----------------------------- Start example ---------------------------------------
#version 3.7;
global_settings { assumed_gamma 1 }
#include "arrays.inc" // For ARRAYS_WriteDF3()
#include "arraycoupleddf3s.inc" // Array coupled df3 macros & functions.
#declare Sphere00=sphere { <0,0,10> 1.0 }
#declare Xn=10;
#declare Yn=10;
#declare Zn=9;
#declare AryDepth=array[Xn][Yn][Zn];
#declare Dx=1/Xn;
#declare Dy=1/Yn;
#declare Dz=1/Zn;
#declare Norm=<0,0,0>;
#declare Range=20.0; // Using DBL's accuracy over limited range.
#for (Y,0,Yn-1)
#debug "\n"
#for (X,0,Xn-1)
#local Xr=-0.5+(X*Dx)+(Dx/2);
#local Yr=-0.5+(Y*Dy)+(Dy/2);
#local tmpVal=vlength(trace(Sphere00,<Xr,Yr,0>,<0,0,1>,Norm)-<Xr,Yr,0>);
NxNx9DBLtoArrayEntry(AryDepth,X,Y,Range,tmpVal)
#debug concat(str(tmpVal,0,4)," ")
#end
#end
#debug "\n"
#declare DepthFileName="Depth.df3";
ARRAYS_WriteDF3(AryDepth,DepthFileName,8) // Write +-64bit encoded depth measures
#declare FnctDepthDF3=function{
pattern{density_file df3 DepthFileName interpolate 0}
}
#declare FnctDepth=FnctNxNx9ArrayEntryToDBL(AryDepth,FnctDepthDF3)
//--- Write the DF3 stored DBL values to the screen.
#for (Y,0,Yn-1)
#debug "\n"
#for (X,0,Xn-1)
#local Xi=(X*Dx)+(Dx/2);
#local Yi=(Y*Dy)+(Dy/2);
#debug concat(str(FnctDepth(Xi,Yi,Dz,Range),0,4)," ")
#end
#end
//--- Read the stored DF3 values into second array
#declare AryDepth2=array[Xn][Yn][Zn];
ARRAYS_ReadDF3(AryDepth2,DepthFileName)
//--- And write a duplicate DF3 file
#declare DepthFileName2="Depth2.df3";
ARRAYS_WriteDF3(AryDepth2,DepthFileName2,8)
#debug "\n\n"
#error "Stop before actual render for demonstration code."
//------------------------------End example------------------------------------------