File:Dyson rings donut.PNG

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

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

Captions

Captions

Add a one-line explanation of what this file represents

Summary[edit]

Description Dyson sphere, Dyson ring, Niven ring, Dyson swarm in DONUT version, folding combo
Date
Source self-made. Donut idea from [1]
Author Arnero

Licensing[edit]

Public domain I, the copyright holder of this work, release this work into the public domain. This applies worldwide.
In some countries this may not be legally possible; if so:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
//Povray
#version 3.1;
global_settings { assumed_gamma 2.2 }

#include "colors.inc"
#include "shapes.inc"

global_settings {
  assumed_gamma 2.0
}
    
camera {
   location <0, 0, -4>
   direction <0, 0, 1.5>
   up  <0, 1, 0>
   right <  4/3 , 0 ,0 >   
}

light_source {<800, 300, -1000> color Red*1.2}
light_source {<-800, 300, -1000> color Green*1.2}
light_source {<0, -900, -1000> color Blue*1.2}



//sphere{ <0,0,0>,1 pigment { White } }

//Ellipse
#declare a=1.0;
#declare b=0.998; //0 
#declare e=sqrt(a*a-b*b);
#declare g=3000;    //granularity < 10000 due to SDL speed limit!


// macros can have parameters and are useful for 'programming' scenes
#macro imper(p)
  #declare ox=cos(p)*a+e;
  #declare oy=sin(p)*b;
  #declare dx=-sin(p)*a;
  #declare dy=cos(p)*b;
  #declare l=l-dx*oy+dy*ox;
  #declare n=sqrt(dx*dx+dy*dy);
#end



//Calculate whole area under ellipse with the same round off errors as in the second loop
#declare l=0;
#declare j = 0;
#while (j < g)
  #declare p=j/g*2*pi;
  imper(p)
  #declare j = j+1;
#end

#declare li=l;  //store

#declare g2=200;
#declare la=array[g2];
#declare lc=0;
#declare lt=li/2/g2;

#declare l=0;
#declare j = 0;
#while (j < g)
  #declare lo=l;
  #declare p=j/g*2*pi;
  imper(p)
  //Orbit
  #while (l>lt) //Das trifft wegen > und nicht >= nicht vor imper() auf
        #declare p=(   (l-lt)/(l-lo)*(j-0.5)+(lt-lo)/(l-lo)*(j+0.5)    ) /g *2*pi;
        #declare la[lc]=p;
        #declare lc=lc+1;
        /*
        sphere {
          <cos(p)*a+e,sin(p)*b,0>,  // NOTE: <0,0,0>, <1,0,0>, <2,0,0>, etc.
          0.1
          pigment { White  }
        } 
        */
        #declare lt=lt+li/g2;
  #end  
  
  #declare j = j+1;   // increment our counter
#end


#declare widt0=2*pi/g2*1.08; //17 //Last factor is hack. Is =1 for circular orbit

#declare hohe=0.02; //7;


#declare band=
union{
#declare j = 0;
#while (j < lc)
        #declare p=la[j];
        
imper(p)        

#declare widt=0;//sqrt(widt0*widt0-n*n)/n*0.1;
               /*
  //Orbit  
  sphere {
    <ox,oy,0>,  // NOTE: <0,0,0>, <1,0,0>, <2,0,0>, etc.
    0.01
//    pigment { White }
  }
             */
  #declare j = j+1;   // increment our counter 

        #declare p=la[j];                     
        
    #declare oox=ox;
    #declare ooy=oy;
        
imper(p)  

#declare widt=sqrt(widt0*widt0-pow(oox-ox,2)-pow(ooy-oy,2));

#declare ox=ox-dy*widt;
#declare oy=oy+dx*widt;
           /*
  //Sputnik  
  sphere {
    <ox,oy,0>,  // NOTE: <0,0,0>, <1,0,0>, <2,0,0>, etc.
    0.01
//    pigment { White }
  }


  cylinder{ 
      <oox,ooy,0>
      <ox,oy,0>,  // NOTE: <0,0,0>, <1,0,0>, <2,0,0>, etc.
    0.01
//    pigment { White }  
  }   
         */
   Quad( <ox,oy,hohe>,<oox,ooy,hohe>,<oox,ooy,-hohe>,<ox,oy,-hohe> ) 

#declare j = j+1;   // increment our counter

    #declare oox=ox;
    #declare ooy=oy;


#declare p=la[mod(j,lc)];
imper(p)
       /*
  cylinder{ 
      <oox,ooy,0>
      <ox,oy,0>,  // NOTE: <0,0,0>, <1,0,0>, <2,0,0>, etc.
    0.01
//    pigment { White }  
  }
     */     
  Quad( <ox,oy,hohe>,<oox,ooy,hohe>,<oox,ooy,-hohe>,<ox,oy,-hohe> )        
  
  #end
}

#declare donut=
#union{
#declare k=0;
#while(k<20)
  object{band rotate <11,0,k/20*360> } // pigment { White }   }   //20
  #declare k=k+1;
#end
}

/*
object{
donut
rotate <0,30,0>
}
*/

/* individual panels

union{
  Quad( <1,-1,0>,<-1,-1,0>,<-1,1,0>,<1,1,0> ) 
  pigment { White } 
}

*/


//stars

#declare R1 = seed(0);      // initialize random number streams
#declare R2 = seed(12345);
#// Create 10 balls along X axis, from 0 to 9
#declare BallCount = 0;
#while (BallCount < 1000)
        sphere { <(rand(R1)-0.5)*15 , (rand(R1)-0.5)*12 ,13>, rand(R2)/40 
        #declare re00=< rand(R1), rand(R1), rand(R1)>;
        pigment{color rgb   re00/max(re00.x,re00.y,re00.z)}
        finish { diffuse 0 ambient 1.4 }
        }
        #declare BallCount = BallCount+1;   // increment our counter
#end



light_source { <0, 0, -0> color White*1.4
  looks_like { sphere { 0, 0.1 pigment { White*10 } } }

}



/*
replace

#declare Dyson_Ring = 
difference {
        sphere {
                <0, 0, 0> // center of sphere <X Y Z>
                1.0       // radius of sphere
        }
        cylinder {-1.1*z,  +1.1*z,  0.988}
                

        #declare k=0;
        #while (k < 180)
  
                box { <-0.005, -1.1, -1.1>, <0.005, 1.1, 1.1> 
                rotate <0, 0, k> // <dX, dY, dZ> (in degrees)
  
                #declare k = k+10;   // increment our counter
  
                }                
        #end                
        
        bounded_by {sphere {0, 1.01}}        
}


*/         


#declare radi=1.3; //superfluos                                                     
#declare sca=-0.09;
union{
object { donut  pigment {White} rotate <52.6625,    0, 0> scale radi*exp(sca*0)}
object { donut  pigment {White} rotate <52.6625,  -72, 0> scale radi*exp(sca*1)}
object { donut  pigment {White} rotate <52.6625, -144, 0> scale radi*exp(sca*2)}
object { donut  pigment {White} rotate <52.6625, -216, 0> scale radi*exp(sca*3)}
object { donut  pigment {White} rotate <52.6625, -288, 0> scale radi*exp(sca*4)}
   
object { donut  pigment {White} rotate <10.8125,    0, 0> scale radi*exp(sca*5)}
object { donut  pigment {White} rotate <10.8125,  -72, 0> scale radi*exp(sca*6)}
object { donut  pigment {White} rotate <10.8125, -144, 0> scale radi*exp(sca*7)}
object { donut  pigment {White} rotate <10.8125, -216, 0> scale radi*exp(sca*8)}
object { donut  pigment {White} rotate <10.8125, -288, 0> scale radi*exp(sca*9)}  
rotate <25,0,0>
}       

File history

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

Date/TimeThumbnailDimensionsUserComment
current09:12, 12 August 2007Thumbnail for version as of 09:12, 12 August 20072,400 × 1,800 (941 KB)Arnero (talk | contribs){{Information |Description=Dyson sphere, Niven ring, dyson swarm in DONUT version, folding combo |Source=self-made. Donut idea from [http://www.burtleburtle.net/bob/scifi/dyson.html] |Date=2007-08-12 |Author= Arnero }}

There are no pages that use this file.

File usage on other wikis

The following other wikis use this file: