Jump to content

File:Dyson rings donut.PNG

Page contents not supported in other languages.
This is a file from the Wikimedia Commons
From Wikipedia, the free encyclopedia

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

Summary

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

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>
}       

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

12 August 2007

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{{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 }}

The following page uses this file: