/**********************************************************************************/ // Persistence of Vision Ray Tracer Scene Description File // File name : Makerock.inc // Version : 3.5 // Image size : // Description : Makes rock meshes // Date : received from Bob Hughes (February 2004) // Author : John van Sickle (modified by Bob Hughes; // addition of "RockName" by Thomas de Groot) // E-mail : /**********************************************************************************/ // If the user forgot to specify, use defaults #ifndef (Smooth) #local Smooth=true; #end #ifndef (Seed) #local Seed=0; #end #local S=seed(Seed); // just in case the user didn't declare it properly #ifndef (Splits) #local Splits=1; #end #ifndef (Size) #local Size=10; #end #ifndef (Rough) #local Rough=.2; #end #ifndef (Omega) #local Omega=.5; #end #ifndef (FileName) #local FileName=concat("ROCK",str(Seed,-4,0),".INC") #end #ifndef (RockName) #local RockName = "RockTest"; #end //============================================================================= #local Tmax=20; #local Emax=30; #local Vmax=12; #local I=0; #while (I*Size*(1+Rough*(rand(S)-rand(S))); #local VL[ 1]=<-qA, qB,0>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[ 2]=< qA,-qB,0>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[ 3]=<-qA,-qB,0>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[ 4]=<0, qA, qB>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[ 5]=<0,-qA, qB>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[ 6]=<0, qA,-qB>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[ 7]=<0,-qA,-qB>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[ 8]=< qB,0, qA>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[ 9]=< qB,0,-qA>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[10]=<-qB,0, qA>*Size*(1+Rough*(rand(S)-rand(S))); #local VL[11]=<-qB,0,-qA>*Size*(1+Rough*(rand(S)-rand(S))); #local I=12; #while (I; #local I=I+1; #end //and the original edges #local E1[ 0]= 0; #local E2[ 0]= 2; #local E1[ 1]= 1; #local E2[ 1]= 3; #local E1[ 2]= 4; #local E2[ 2]= 6; #local E1[ 3]= 5; #local E2[ 3]= 7; #local E1[ 4]= 8; #local E2[ 4]=10; #local E1[ 5]= 9; #local E2[ 5]=11; #local E1[ 6]= 2; #local E2[ 6]= 5; #local E1[ 7]= 2; #local E2[ 7]= 7; #local E1[ 8]= 2; #local E2[ 8]= 8; #local E1[ 9]= 2; #local E2[ 9]= 9; #local E1[10]= 1; #local E2[10]= 4; #local E1[11]= 1; #local E2[11]= 6; #local E1[12]= 1; #local E2[12]=10; #local E1[13]= 1; #local E2[13]=11; #local E1[14]= 0; #local E2[14]= 4; #local E1[15]= 0; #local E2[15]= 8; #local E1[16]= 0; #local E2[16]= 9; #local E1[17]= 0; #local E2[17]= 6; #local E1[18]= 3; #local E2[18]= 5; #local E1[19]= 3; #local E2[19]= 7; #local E1[20]= 3; #local E2[20]=10; #local E1[21]= 3; #local E2[21]=11; #local E1[22]= 4; #local E2[22]= 8; #local E1[23]= 4; #local E2[23]=10; #local E1[24]= 5; #local E2[24]= 8; #local E1[25]= 5; #local E2[25]=10; #local E1[26]= 6; #local E2[26]= 9; #local E1[27]= 6; #local E2[27]=11; #local E1[28]= 7; #local E2[28]= 9; #local E1[29]= 7; #local E2[29]=11; #local I=30; #while (I; #local I=I+1; #end //Now we calculate the surface normals for each triangle #local I=0; #while (I