File:Fictional planet system Monni 1 1 1 1.png

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search

Original file(2,400 × 800 pixels, file size: 197 KB, MIME type: image/png)

Captions

Captions

Monni planet system

Summary

[edit]
Description
English: Fictional planetary system to education purposes.

Solar twin star Monni has 11 planets. Most massive giant planet has two big moons.

One planet orbits just outside to HZ, but can harbor life, if is not ocean covered.
Date
Source Own work
Author Merikanto

////////////////////////// // // planet system rendering test v 2.1 with POV-Ray 3.8 for linux // // 14.01.2024 v2b rel 0000.0007 // ////////////////////////////

  1. include "functions.inc"
  2. include "rand.inc"

camera { location <0,0,10>*5 look_at 0 up -3/10

   right -10/10

}

light_source { <-10000,0,10000>*10000 color rgb <1,1,1>*2 }

  1. declare samples1=2;
  1. macro star2(xloc1, yloc1, zloc1,size1,color1, color2)

union {

 sphere {
 0, 1
 pigment { color rgb color2 }
 finish {ambient color2*2}
    scale 0.25
   }
sphere {
 0, 1
 pigment { color rgbf 1 }
 hollow
 interior {
   media {
     emission 10
     method 3
     intervals 2
     samples samples1
    // emission_type 2
    // emission_extinction 2
     density {

// spherical

//function {exp(-sqrt(x*x+y*y+z*z))}

           function { 1/(3000)*pow( sqrt(x*x+y*y+z*z),-4 ) *f_granite(atan(x/y),atan(y/x),atan(z/x))
            *pow( sqrt(x*x+y*y+z*z),-4 )
           }    
               
 //  function {pow(1*f_spherical(x,y,z),4)*0.33 }

// scallop_wave

//    function {pow( (2*(sqrt(x*x+y*y+z*z))) ,-1) } 
     //    function {pow(f_spherical(x,y,z),2)*f_wrinkles(x*1000,y*1000,z*1000) }  
         //      function {f_wrinkles(x*10,y*10,z*10) }  
       color_map {
         [ 0.0 rgb 0.0 ] 
      //      [ 0.2 rgb color1*0.05   ]
       //  [ 0.6 rgb  color1*0.5 ]
         [ 1.0 rgb  color2*2 ]
       }
     }
   }

 // absorbing stuff#declare samples1=30;


 }

} scale size1

	translate x*xloc1

translate y*yloc1 translate z*zloc1 } // juunion

  1. end
  1. macro print_string(str1, col1,size1, x1, y1)
 text {
   ttf "timrom.ttf" str1 0.1, 0
   pigment { color rgbt col1 } 
   finish {ambient 1}
   scale size1
   translate x*x1
   translate y*y1
   translate z*0.2 
   
 }
  1. end
  1. macro print_caption(str1, x1, y1, skale1, color1)
 text {
   ttf "timrom.ttf" str1 0.1, 0
   pigment { color rgbt color1 } 
       finish {ambient 1}
   scale 2*skale1
   translate x*x1
   translate y*y1
   translate z*0.3 
   
 }
  1. end
  1. macro star01 (xloc1, yloc1, zloc1, size1, name1, color1, color2)

object { sphere {0,1} texture { pigment { wrinkles scale 1/10 turbulence 0.5 color_map { [0 color rgb color1] [1 color rgb color2] } }

finish { diffuse 0.6 ambient 1} }

scale size1

translate x*xloc1 translate y*yloc1 translate z*zloc1

}

  1. end
  1. macro planet01 (xloc1, yloc1,zloc1, size1, name1, color1, color2)

object { sphere {0,1} texture { pigment { wrinkles scale y/3 color_map { [0 color rgb color1] [1 color rgb color2] } }

finish { diffuse 0.6 ambient 1}

}

scale size1 translate x*xloc1 translate y*yloc1 translate z*zloc1 }

  1. end
  1. declare pig_clouds_1= pigment {
 wrinkles 
//omega 0.5

//lambda 0.5 scale 1/5

 turbulence 1

scale 3

warp { turbulence 0.5}

scale 1/3

scale 10

warp { turbulence 0.5}

scale 1/10 }

  1. declare clouds_1= object {
#declare randi1= SRand(0) ;
#declare randi2= SRand(1) ;
#declare randi3= SRand(2) ;
#declare randi4= SRand(3) ;

sphere {0,1.005} texture {

pigment {
 //pig_clouds_1
   wrinkles 
  // granite
   warp { turbulence 0.5 }
   turbulence randi1 
   turbulence 0.5
   scale 1/2
   rotate x*randi1*180
       rotate y*randi1*360
   color_map {
       [0 color rgbt <1,1,1,1>]
      [0.3 color rgbt <1,1,1,1>]   
  [1 color rgbt  <1,1,1,0>*1]
   }
}
//   normal { pigment_pattern { pig_clouds_1 } 0.1 }
 finish { ambient 0 diffuse 0.42 brilliance 0.4}

} }

  1. declare clouds_2= object {
#declare randi1= SRand(0) ;
#declare randi2= SRand(1) ;
#declare randi3= SRand(2) ;
#declare randi4= SRand(3) ;

sphere {0,1.002} texture {

pigment {
 //pig_clouds_1
   wrinkles 
  // granite

scale 0.1

  warp { turbulence 1 }

scale 10

scale z/6
   turbulence randi1 
 //  turbulence 0.5
   scale 1/2
   rotate x*randi1*180
       rotate y*randi1*360
   color_map {
       [0 color rgbt <1,1,1,1>]
  //    [0.3 color rgbt <1,1,1,1>]   
  [1 color rgbt  <1,1,1,0>*1]
   }
}
//   normal { pigment_pattern { pig_clouds_1 } 0.1 }
 finish { 
   ambient 0 diffuse 0.42 brilliance 0.4 phong 0.05 phong_size 1 specular 0.01 
 metallic
   }

} }


  1. declare atmos_1 = object

{ sphere {0,1 }

 pigment{ rgbt 1 }
   hollow
interior{ //-----------
media{
 emission <-0.4,0.7,1>*0
 scattering{ 3, 
 
 <0.24, 0.47, 1>*15 // rayleigh atm!
 
 
             extinction  5 }
 density{ 
 spherical
 

// poly_wave 6.7

 poly_wave 6
   color_map {
    [0.0 rgb 0.0]//
    [1.0 rgb 1]//
    }
   } 
 } 
} 

//scale 2.7*0.9 scale 1.75 }


  1. declare rings_1=object {
#declare randi1= SRand(0) ;
#declare randi2= SRand(1) ;
#declare randi3= SRand(2) ;
#declare randi4= SRand(3) ;
 torus { 2, 0.5 scale y/100 
 

  texture {
  pigment { 
   
   //onion
   //function {f_onion(x,y,z)}
   function {f_granite(f_onion(x,y,z),randi1,randi2) }
  poly_wave 2
  color_map {
  
   [0 color rgbt <1,1,1,1> ] 
  [1 color rgbt <1,1,1,0.5>*1 ] }
  
  }
  }
   finish {diffuse 0.3 phong 0.1 specular 0.01 }
  
  }

} // rings

  1. macro planet_base_1 (xloc1, yloc1,zloc1, size1, type1, inclination1)
#declare randi1= SRand(0) ;
#declare randi2= SRand(1) ;
#declare randi3= SRand(2) ;
#declare randi4= SRand(3) ;

object { sphere {0,1}

#if(type1="asteroids0")

texture {

pigment { color rgbt 1

}

}

#end


#if(type1="empty")

texture {

pigment { color rgbt 1

}

}

#end


#if (type1="basic") #declare type1="base"; #end #if (type1="basic2") #declare type1="base2"; #end


#if(type1="base")

texture {

pigment {

wrinkles scale 1/3

turbulence randi2/5 rotate z*inclination1

color_map { [0 color rgb <0.741176, 0.486275, 0.423529>] [1 color rgb <0.305882, 0.121569, 0.0862745>]

} }

finish { diffuse 0.6 ambient 0 phong 0.1}

}

#end

#if(type1="base2")

texture {

pigment {

wrinkles //agate //bozo //granite

turbulence 1 scale 1/2

scale y/3

warp {turbulence 0.5 }


turbulence randi2/5 rotate z*inclination1

color_map { // [0 color rgb <0.741176, 0.486275, 0.423529>*0.8] // [0.5 color rgb <0.741176, 0.486275, 0.423529>] [0.0 color rgb <1,0.5,0>] [1 color rgb <1,1,1>]

} }

finish { diffuse 0.6 ambient 0 phong 0.1}

}

texture { pigment {color rgbt <0.5,0.5,0.5,0.5>} finish { phong 0.1 specular 0.05 } }


#end

#if (type1="stone") #declare type1="rock"; #end

#if (type1="stone2") #declare type1="rock2"; #end


#if(type1="rock")

texture {

pigment {

       function {

//( f_hetero_mf(x,y,z, 0.9, 1.7,13, 0.5, 0.9, 3 )*4/10* (f_ridged_mf(x*3,y*3,z*3,0.5,2,64,-0.7,0.8, 2)) *0.25)

0.8*(f_wrinkles(x*5,y*5,z*5)*0.5+f_granite(x,y,z)*0.5) +0.2*f_granite(x*10,y*10,z*10)

   }
       scale 4


warp { turbulence 0.3} // scale 1/3 octaves 60


turbulence randi2/5 rotate z*inclination1

color_map { [0 color rgb <0.807843, 0.588235, 0.415686>*1.0-randi2/10]

[1 color rgb <0.521569, 0.431373, 0.337255>*0.5+randi3/10]


} }

finish { diffuse 0.6 ambient 0 phong 0.05 specular 0.1 }

}

#end

#if(type1="rock2")

texture {

pigment { //granite wrinkles color_map { [0 color rgb <0.796078, 0.584314, 0.458824> ] [1 color rgb <0.25098, 0.258824, 0.301961>] }

}


finish { diffuse 0.6 ambient 0 phong 0.05 specular 0.1 }

normal { granite bump_size 0.1 scale 0.2}

}


#end

#if (type1="ocean") #declare type1="water"; #end #if(type1="water")

texture {

pigment {

wrinkles scale y/3 turbulence randi2/5 rotate z*inclination1

color_map { [0 color rgb <0.239216, 0.380392, 0.568627>] [1 color rgb <0.960784, 0.992157, 0.992157>] } }

finish { diffuse 0.6 ambient 0}

}

#end

#if(type1="ice")

texture {

pigment {

wrinkles //scale y/3 // turbulence randi2/5 rotate z*inclination1

color_map { [0 color rgb 1] [1 color rgb 0.9] } }

finish { diffuse 0.6 ambient 0}

}

#end


#if (type1="minineptune") #declare type1="gasdwarf"; #end

#if (type1="minineptune2") #declare type1="gasdwarf2"; #end


#if(type1="gasdwarf")

texture {

pigment {

function { f_granite (y,randi1*f_wrinkles(x,y,z), randi2)}

rotate z*inclination1

color_map { [0 color rgb <0.670588, 0.866667, 0.894118>] [1 color rgb <0.254902, 0.72549, 0.792157>] } }

finish { diffuse 0.6 ambient 0}

}

#end

#if(type1="gasdwarf2")

texture {

pigment {

//function { f_granite (y,randi1*f_wrinkles(x,y,z), randi2)} function { f_wrinkles (0,y+randi1,0) }

scale 10 warp { turbulence 0.5} scale 1/10

rotate z*inclination1

color_map { [0 color rgb <0.15,1,1>*1] [1 color rgb <0.15,0.15,1>*1] } }

finish { diffuse 0.6 ambient 0 phong 0.01 }

}

#end

#if(type1="neptune")

texture {

pigment {

//granite function { f_granite (y,randi1, randi2)} scale 10 warp { turbulence 0.5} scale 1/10

scale y/3 // turbulence randi2/5 rotate z*inclination1

color_map { [0 color rgb <0.827451, 0.960784, 0.968627>] [1 color rgb <0.662745, 0.819608, 0.87451>] } }

finish { diffuse 0.6 ambient 0}

}

#end

#if(type1="saturn")

texture {

pigment {

//wrinkles function { f_granite (y,randi1, randi2)}

scale 10 warp { turbulence 0.5} scale 1/10

// turbulence randi2/5 rotate z*inclination1

// scale y/5


color_map { [0 color rgb <0.941176, 0.827451, 0.529412>] [1 color rgb <0.701961, 0.592157, 0.407843>] } }

finish { diffuse 0.6 ambient 0}

}

#end

#if (type1="gasgiant") #declare type1="gas"; #end

#if (type1="giant") #declare type1="gas"; #end

#if (type1="jupiter") #declare type1="gas"; #end

#if (type1="jovian") #declare type1="gas"; #end

#if(type1="gas")

texture {

pigment {

function { f_agate (y,randi1, randi2)} //wrinkles scale 10 warp { turbulence 0.5} scale 1/10

// turbulence randi2/5 rotate z*inclination1

// scale y/5


color_map { [0 color rgb <0.764706, 0.615686, 0.466667>] [1 color rgb <0.960784, 0.960784, 0.992157>] } }

finish { diffuse 0.6 ambient 0}

}

#end


// objekt modifiers

scale size1 translate x*xloc1 translate y*yloc1 translate z*zloc1 }

  1. end
  1. macro planet_system_1(starx1,starsize1,planetoffset1,radiuscoeff1,dmax1 ,numplanets1, systemname1, names1, distances1, radiuses1, types1, atmoses1, coudeses1, ringeses1)

union {

#declare beginx1=distances1[0]; #declare endx1=distances1[numplanets1-1];

#declare dfx1=log(endx1)-log(beginx1); #declare dkx1=dmax1/dfx1;


#declare nupa1=numplanets1-1; #if (numplanets1=1) #declare nupa1=1; #end

#for (nn,0,nupa1 )

#declare planetx1=distances1[nn]; //#declare planetx1=0nn*0.1;

#declare planetr1=radiuses1[nn]*radiuscoeff1; //#declare planetr1=log(radiuses1[nn])*radiuscoeff1;


#declare dpx1=log(planetx1)-log(beginx1);

#declare sitex1=starx1+starsize1+planetoffset1+dpx1*dkx1;

//#declare sitex2=starx1+starsize1+planetoffset1+nn*dkx1*0.08; //#declare sitex1=sitex2;


#declare type1=types1[nn];

#declare randi1= SRand(0) ; #declare randi2= SRand(1) ; #declare randi3= SRand(2) ; #declare randi4= SRand(3) ;

#declare inclination1=randi1*30; //#declare inclination1=90; #declare inclination2=45;

#if(types1[nn]="asteroids")


object {

intersection { torus {sitex1-starx1, 1 } sphere {x*(sitex1-starx1),6} }

translate x*starx1


rotate x*90

texture { pigment { bozo scale 1/3 //granite

color_map { [0 color rgbt <1,1,1,0> ] [0.25 color rgbt <1,1,1,0> ] [0.25 color rgbt <1,1,1,1>*1 ] [1 color rgbt <1,1,1,1>*1 ] }

}

finish {ambient 1} }

}

#end

object {

planet_base_1 (sitex1, 0,0, planetr1, type1, inclination1)

//rotate x*90

rotate x*inclination2

}

#declare isatm1=atmoses1[nn];

#if (isatm1=1) object { atmos_1 scale planetr1 translate x*sitex1} #end

#if (cloudeses1[nn]=1) object { clouds_2 scale planetr1 rotate z*inclination1 translate x*sitex1} #end


#if (ringeses1[nn]=1) object { rings_1 rotate z*inclination1 rotate x*inclination2 scale 1 scale planetr1 translate x*sitex1}


#end


#end

}

  1. end
  1. macro print_names_1(starx1,starsize1,planetoffset1,numplanets1, names1, col1, size1)

#declare beginx1=distances1[0]; #declare endx1=distances1[numplanets1-1];

#declare dfx1=log(endx1)-log(beginx1); #declare dkx1=dmax1/dfx1;

#for (nn,0,(numplanets1-1) )

#declare planetx1=distances1[nn]; //#declare planetx1=0nn*0.1;

//#declare planetr1=radiuses1[nn]*radiuscoeff1; //#declare planetr1=log(radiuses1[nn])*radiuscoeff1;


#declare dpx1=log(planetx1)-log(beginx1);

#declare sitex1=starx1+starsize1+planetoffset1+dpx1*dkx1;


print_string(names1[nn], col1,size1, sitex1-1, -11)

#end


  1. end
  1. macro tell_sitex_1(num1, numplanets1, distances1, starx1,starsize1,planetoffset1, dmax1)

#declare beginx1=distances1[0]; #declare endx1=distances1[numplanets1-1];

#declare dfx1=log(endx1)-log(beginx1); #declare dkx1=dmax1/dfx1;


#declare planetx1=distances1[num1];

#declare sitex2=starx1+starsize1+planetoffset1+dpx1*dkx1;

#declare planetx2=sitex2;

#declare tell_sitex_1=planetx2;

  1. end
  1. macro asteroid_zone_1(numplanets1, distances1, starx1,dmax1, starsize1,planetoffset1,aa1,aa2)

#declare beginx1=distances1[0]; #declare endx1=distances1[numplanets1-1];

#declare dfx1=log(endx1)-log(beginx1); #declare dkx1=dmax1/dfx1;

#declare dpx1=log(aa1)-log(beginx1); #declare dpx2=log(aa2)-log(beginx1);

#declare rax1=starx1+starsize1+planetoffset1+dpx1*dkx1; #declare rax2=starx1+starsize1+planetoffset1+dpx2*dkx1; #declare rax3=(rax1+rax2)/2; #declare rdx1=rax2-rax1; #declare rdx2=rdx1/2;

#declare arx1=rax3+abs(starx1);


object {

// disc {<starx1,0,0>, <0,0,1>, rax2, rax1} // sphere {0,1 translate x*rax3}

torus {arx1, rdx2 } // disc {0, <1,1,1>, 10, 20} rotate x*90

translate x*starx1 scale z/1000

texture { pigment {

// color rgb 1 bozo scale 1/3

// granite

color_map { [0 color rgbt <1,1,1,0> ] [0.2 color rgbt <1,1,1,0> ] [0.2 color rgbt <1,1,1,1>*1 ] [1 color rgbt <1,1,1,1>*1 ] }

}

finish {ambient 10} } }

  1. end
  1. macro circular_orbit_1(aa1, color1, numplanets1, distances1, starx1,dmax1, starsize1,planetoffset1)

#declare beginx1=distances1[0]; #declare endx1=distances1[numplanets1-1];

#declare dfx1=log(endx1)-log(beginx1); #declare dkx1=dmax1/dfx1;

#declare dpx1=log(aa1)-log(beginx1);


#declare rax1=starx1+starsize1+planetoffset1+dpx1*dkx1;

#declare arx1=rax1+abs(starx1);


object {


torus {arx1, 0.1 }

rotate x*90

translate x*starx1 scale z/1000

texture { pigment {

color rgbt color1


}

finish {ambient 10} } }

  1. end
  1. macro color_zone_1(numplanets1, distances1, starx1,dmax1, starsize1,planetoffset1,aa1,aa2, color1)

#declare beginx1=distances1[0]; #declare endx1=distances1[numplanets1-1];

#declare dfx1=log(endx1)-log(beginx1); #declare dkx1=dmax1/dfx1;

#declare dpx1=log(aa1)-log(beginx1); #declare dpx2=log(aa2)-log(beginx1);

#declare rax1=starx1+starsize1+planetoffset1+dpx1*dkx1; #declare rax2=starx1+starsize1+planetoffset1+dpx2*dkx1; #declare rax3=(rax1+rax2)/2; #declare rdx1=rax2-rax1; #declare rdx2=rdx1/2;

#declare arx1=rax3+abs(starx1);


object {

torus {arx1, rdx2 } // disc {0, <1,1,1>, 10, 20} rotate x*90

translate x*starx1 scale z/1000

texture { pigment { rgbt color1 }

finish {ambient 11} } }

  1. end

///////// parameters of planet system

// // fictional planet system: stargen seed 1, mass 1, 0ne planat transformet to asteroid belt, two fictional moons // // https://fast-times.eldacur.com/cgi-bin/StarGen.pl //

  1. declare numplanets1=11;
  1. declare systemname1="Monni";
  1. declare names1=array[numplanets1]{"1","2", "3", "4","5","6" , "7","8","9", "A","B" }
  1. declare distances1=array[numplanets1]{0.356,0.507,0.751, 1.110,2.060,3.762 ,7.338,16.957,24.027, 42.803,49.947 }
  1. declare radiuses1=array[numplanets1]{ 0.523,0.682,0.562, 1.347,1.051,6.516 , 12.604,9.560,2.512, 1.240,0.366 }
  1. declare types1=array[numplanets1]{ "rock","rock","rock", "ocean","null","saturn" , "jupiter","jupiter","gasdwarf", "ice","ice" }
  1. declare atmoses1=array[numplanets1]{0,0,0, 0,0,0, 0,0,0, 0,0}
  2. declare cloudeses1=array[numplanets1]{0,0,0, 0,0,0, 0,0,0, 0,0}
  3. declare ringeses1=array[numplanets1]{0,0,0, 0,0,1, 0,0,0, 0,0}
  1. declare starcolor1 = <1.0,0.637,0.34>;
  2. declare starcolor2 = <1.0,0.637,0.34>*0.95;
  1. declare starx1=-40;
  2. declare starsize1 =5.0;
  3. declare planetoffset1=starsize1*0.2;
  4. declare radiuscoeff1=0.3;
  5. declare dmax1=75;
  1. declare color1=<0,0,1,0>;

print_caption(systemname1, -10, 8,1.5*2, color1)

star2(starx1, 0,0, starsize1,starcolor1, starcolor2)

planet_system_1(starx1,starsize1,planetoffset1,radiuscoeff1,dmax1 ,numplanets1, systemname1, names1, distances1, radiuses1, types1, atmoses1, cloudeses1, ringeses1)

  1. declare col1=<1,1/2,1/2,0>;
  2. declare size1=3;

print_names_1(starx1,starsize1,planetoffset1,numplanets1, names1, col1, size1)

  1. declare aa1=1.4;
  2. declare aa2=2.6;

asteroid_zone_1(numplanets1, distances1, starx1,dmax1, starsize1,planetoffset1,aa1,aa2)

  1. declare color1=<0,0,1,0>;
  2. declare aa1=2.2;

//circular_orbit_1(aa1, color1, numplanets1, distances1, starx1,dmax1, starsize1,planetoffset1)

// Habitable done, assumed +-7%

  1. declare aa1=0.93;
  2. declare aa2=1.07;
  3. declare color1=<0,0.5,0,0.99>;

color_zone_1(numplanets1, distances1, starx1,dmax1, starsize1,planetoffset1,aa1,aa2, color1)

//#declare col1=<1,1,1>; //print_string("Radius Re: ",col1, starx1, -11)


// moon of planet 10

  1. declare numplanets2=2;
  1. declare systemname2="A";
  1. declare names2=array[numplanets2]{"1", "2" }
  1. declare distances2=array[numplanets2]{ 0.1, 0.2 }
  1. declare radiuses2=array[numplanets2]{ 0.475, 0.8 }
  1. declare types2=array[numplanets2]{ "basic" , "ice" }
  1. declare atmoses2=array[numplanets2]{0,0}
  2. declare cloudeses2=array[numplanets2]{0,0}
  3. declare ringeses2=array[numplanets2]{0,0}

/*

  1. declare names2=array[numplanets2]{"1", "0" }
  1. declare distances2=array[numplanets2]{ 0.1, 1 }
  1. declare radiuses2=array[numplanets2]{ 0.475, 1 }
  1. declare types2=array[numplanets2]{ "basic", "empty" }
  • /
  1. declare atmoses2=array[numplanets2]{0,0}
  2. declare cloudeses2=array[numplanets2]{0,0}
  3. declare ringeses2=array[numplanets2]{0,0}
  1. declare num1=9;

//tell_sitex_1(num1, numplanets1, distances1, starx1,starsize1,planetoffset1, dmax1)

//#declare beginx1=distances1[0]; //#declare endx1=distances1[numplanets1-1];

//#declare dfx1=log(endx1)-log(beginx1); //#declare dkx1=dmax1/dfx1;

//#declare planetx1=distances1[num1];


//#declare planetx2=starx1+starsize1+planetoffset1+dpx1*dkx1;

  1. declare planetx2=50;


  1. declare starx2=planetx2;
  2. declare starsize2 =1;
  3. declare planetoffset2=starsize2;
  1. declare radiuscoeff2=0.4;
  2. declare dmax2=1;

object { planet_system_1(starx1,starsize2,planetoffset1,radiuscoeff2,dmax2 ,numplanets2, systemname2, names2, distances2, radiuses2, types2, atmoses2, cloudeses2, ringeses2) //rotate z*10 translate y*-6 translate x*planetx2

}

Licensing

[edit]
I, the copyright holder of this work, hereby publish it under the following license:
Creative Commons CC-Zero This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current15:33, 14 February 2024Thumbnail for version as of 15:33, 14 February 20242,400 × 800 (197 KB)Merikanto (talk | contribs)Uploaded own work with UploadWizard

There are no pages that use this file.

Metadata