//---------------------------------------------------------------------------- // dimanche 28 octobre 2001 00:39:02 // // Lionel Gonçalvès // Y0/UnkN0rgZ // // Révision 25/02/2011 // //---------------------------------------------------------------------------- // // // fichier création des systèmes NKYO Galactics // // puis écriture dans des fichiers de type: // // > texte // // > *.e // // > *.c // // > *.pov // //---------------------------------------------------------------------------- // t0d0: // // > contrôle de la création des systèmes: // // = gestion des variables Nbre_Syst // // soit: Nbre_Syst (=33) MaxPlanets (=8) Seed (=20) // // // // > possibilité d'inclure les noms des systèmes et astres divers.// // - génération de noms aléatoires. // // // // > inclure la sortie vers d'autres format (???) // //---------------------------------------------------------------------------- #declare X=0; #declare Y=1; #declare Z=2; #declare P=3; // P = nombre de planètes d'un système // #declare Seed = 20; #declare Nbre_Syst=33; #declare MaxPlanets=8; #declare rayon =0; #declare Total = 0; // X Y Z P #declare cxyz = <0,0,0>; #declare cxyzp = <0,0,0,0>; #declare coord = array[Nbre_Syst][4] #declare planets= array[Nbre_Syst][MaxPlanets][3] #for (i,0,Nbre_Syst-1) #declare coord[i][X] = 0; #declare coord[i][Y] = 0; #declare coord[i][Z] = 0; #declare coord[i][P] = 0; #end #for (i,0,Nbre_Syst-1) #for (ii,0, MaxPlanets-1) // #declare planets[i][ii] = cxyzp; #declare planets[i][ii][X] = 0; #declare planets[i][ii][Y] = 0; #declare planets[i][ii][Z] = 0; #end #end // X Y Z //planets=repeat({0,0,0},10) //#declare f1=0; // flag ouverture fichier //sequence nomfichier, nomdefini //nomfichier={} #declare nomdefini="test"; #declare numerofichier = 0; #macro tirage() #declare modif = 0; #declare entre =-1; // modification des variables // nombre d'étoiles (Nbre_Syst=33) (mini=10 - maxi=100) // maximum de planètes par étoile (MaxPlanets=8) (mini=1 - maxi=15) // semence du générateur (Seed=20) (mini=1 - NoMaxiLimit) #declare Sd = seed(Seed); #local ScaleValue = 10; // tirage aléatoire des coordonnées de chaque étoile #for (i,0, Nbre_Syst-1) #declare coord[i][X]=((rand(Sd)*100)-50)+(rand(Sd)*100)/ScaleValue; #declare coord[i][Y]=((rand(Sd)*100)-50)+(rand(Sd)*100)/ScaleValue; #declare coord[i][Z]=((rand(Sd)*100)-50)+(rand(Sd)*100)/ScaleValue; #end // tirage du nbre de planètes pour chaque système et de leurs coordonnées: #for (i,0,Nbre_Syst-1) #declare coord[i][P]=floor(rand(Sd)*MaxPlanets); #declare Total=Total+coord[i][P]; #for (i1,0,coord[i][P]-1) #declare planets[i][i1][X]=coord[i][X]+(((rand(Sd)*200)-100)/50); #declare planets[i][i1][Y]=coord[i][Y]+(((rand(Sd)*200)-100)/50); #declare planets[i][i1][Z]=coord[i][Z]+(((rand(Sd)*200)-100)/50); #end #end //#write(1,"Le nouveau système galactique comprend: %d ‚toiles et %d planètes", {Nbre_Syst, Total}) #end //////////////////////////////////////////////////////// // CRITURES DANS LES FICHIERS //////////////////////- //////////////////////////////////////////////////////// //////////////////////////////////////////- // ‚criture dans un fichier format *.POV // //////////////////////////////////////////- #macro fichierPov() #declare nomfichier="stars_gen.pov"; #fopen f1 nomfichier write #write(f1,concat( "//The new galactic system count:", str(Nbre_Syst,3,1), "stars et ", str(Total,3,1), "planets\n" ) #write(f1,"#version 3.7;\n") #write(f1,"global_settings {\n\tassumed_gamma 1.0}\n") #write(f1,"#include \"colors.inc\"\n") #write(f1,"#declare sky_vect = z;\n") #write(f1,"#declare cam_loc = <-52,0,-90>;\n") #write(f1,"#declare lookat = <0,0,0>;\n") #write(f1," camera {\n location cam_loc\n look_at lookat\n angle 90\n }\n") #write(f1," light_source { <0, 0, -50> White }\n") #write(f1," light_source { <0, -50, 0> White }\n") #write(f1," light_source { <-50, 0, 0> Green }\n") #for (i,0, Nbre_Syst-1) #write(f1,concat("// Solar System #",str(i, 3, 1)),"\n") #write(f1,"//Sun\n") //rayon=(rand(10)+5)/10 #declare rayon = 0.9; #write(f1, concat ( "\nsphere{\n\t<", str(coord[i][X],3,1), "," str(coord[i][Y],3,1), "," str(coord[i][Z],3,1), ">," ) #write(f1, concat (str(rayon,3,1), "\n")) #write(f1,"\tpigment{ color rgb <1,1,1>}\n") #write(f1,"\tfinish {diffuse 0.8 brilliance 0.9 metallic 0.9}\n}\n") #for (ii,0, coord[i][P]-1) // rayon=rand(6)/10 #declare rayon = 0.23; #write(f1,concat("//Planet # ",str(ii, 3, 1))) //#write(f1, concat("\n\tsphere { <" vstr(3, planets[i][ii], ", ", 0, 6) ">,")) #write(f1, concat ( "\nsphere{\n\t <", str(planets[i][ii][X],3,1), "," str(planets[i][ii][Y],3,1), "," str(planets[i][ii][Z],3,1), ">," ) #write(f1, concat (str(rayon,3,1), "\n")) #write(f1,"\tpigment{ color rgb <1,0,0>}\n}\n") #end #write(f1,"\n//===================================\n") #end #fclose f1 #end // fichier *.pov ////////////////////////////////////////////////////- ////////////////////////////////////////////////////- // principal ////////////////////////////////////////////////////- tirage() fichierPov()