File:Tesseract tetrahedron shadow with alternating vertex colors, upper cube.png

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

Original file(3,624 × 3,990 pixels, file size: 852 KB, MIME type: image/png)

Captions

Captions

Add a one-line explanation of what this file represents

Summary[edit]

Description

Upper cube (containing opposite vertex to the projection center) in

Compare lower cube:

 
This image was created with POV-Ray.
Source Own work
Author
Watchduck
You can name the author as "T. Piesk", "Tilman Piesk" or "Watchduck".

Licensing[edit]

I, the copyright holder of this work, hereby publish it under the following licenses:
GNU head Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.
w:en:Creative Commons
attribution
This file is licensed under the Creative Commons Attribution 4.0 International license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
You may select the license of your choice.

POV-Ray source[edit]

#version 3.6;
global_settings { assumed_gamma 1.0 }
#default{ finish{ ambient 0.1 diffuse 0.9 conserve_energy}}

#include "colors.inc"


///////////////////////////// camera and light

#declare Camera_Position = <10, 16, -50>;
camera{
    location Camera_Position
    right    x*image_width/image_height
    angle    11.3
    look_at  <.7, 1.1, 0>
}

light_source{ <-400, 500, -300> color White*0.9 shadowless}
light_source{ <400, 200, 100> color White*0.4 shadowless}
light_source{ Camera_Position  color rgb<0.9,0.9,1>*0.2 shadowless}
sky_sphere{ pigment{ White } }


/////////////////////////////////////////////////////////////////////////////////////////////////


#declare Factor = 7;

#declare EdgeColor = <.5, .5, .5, 0>;
#declare TransparentEdgeColor = <.5, .5, .5, .95>;

#declare LightVertexColor = <.5, .8*.5, .65*.5, 0>;
#declare DarkVertexColor  = <.2, .8*.2, .65*.2, 0>;
#declare TransparentLightVertexColor = <.5, .8*.5, .65*.5, .95>;
#declare TransparentDarkVertexColor  = <.2, .8*.2, .65*.2, .95>;

#declare RedFaceColor  = <1, 0, 0, .18>;


/////////////////////////////////////////////////////////////////////////////////////////////////


#declare VertexPoints = array[15]{ <-0.7071067811865475, -0.408248290463863, -0.28867513459481287>, <0.0, 0.0, 0.8660254037844386>, <-0.35355339059327373, -0.2041241452319315, 0.28867513459481287>, <0.0, 0.816496580927726, -0.28867513459481287>, <-0.35355339059327373, 0.2041241452319315, -0.28867513459481287>, <0.0, 0.408248290463863, 0.28867513459481287>, <-0.2357022603955158, 0.13608276348795434, 0.09622504486493762>, <0.7071067811865475, -0.408248290463863, -0.28867513459481287>, <0.0, -0.408248290463863, -0.28867513459481287>, <0.35355339059327373, -0.2041241452319315, 0.28867513459481287>, <0.0, -0.2721655269759087, 0.09622504486493762>, <0.35355339059327373, 0.2041241452319315, -0.28867513459481287>, <0.0, 0.0, -0.28867513459481287>, <0.2357022603955158, 0.13608276348795434, 0.09622504486493762>, <0.0, 0.0, 0.0> }

#declare VertexRanks = array[15]{ 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }

#declare FakeRanks = array[5]{0, 1, 3, 6, 10};

#declare VertexRankParities = array[15]{ 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0 }


#declare TransparentVertices = array[7]{ 1, 4, 8, 5, 9, 12, 13 };

#declare SolidVertices = array[8]{ 2, 3, 6, 10, 7, 11, 14, 15 };


#declare TransparentEdges = array[16]{ array[2]{1, 3}, array[2]{4, 5}, array[2]{8, 9}, array[2]{12, 13}, array[2]{4, 6}, array[2]{5, 7}, array[2]{8, 10}, array[2]{9, 11}, array[2]{12, 14}, array[2]{13, 15}, array[2]{1, 5}, array[2]{8, 12}, array[2]{9, 13}, array[2]{1, 9}, array[2]{4, 12}, array[2]{5, 13} }

#declare SolidEdges = array[12]{ array[2]{2, 3}, array[2]{2, 6}, array[2]{2, 10}, array[2]{3, 7}, array[2]{3, 11}, array[2]{6, 7}, array[2]{6, 14}, array[2]{10, 11}, array[2]{10, 14}, array[2]{7, 15}, array[2]{11, 15}, array[2]{14, 15} }


#declare Faces = array[6]{ array[4]{6, 2, 3, 7}, array[4]{10, 2, 3, 11}, array[4]{10, 2, 6, 14}, array[4]{14, 10, 11, 15}, array[4]{14, 6, 7, 15}, array[4]{11, 3, 7, 15} }


/////////////////////////////////////////////////////////////////////////////////////////////////


union{

    // TRANSPARENT VERTICES AND EDGES
    merge{
        union{
            #for( i, 0, dimension_size(TransparentVertices, 1)-1 )
                #local VertexIndex = TransparentVertices[i] - 1;
                #local Rank = VertexRanks[VertexIndex];
                #local FakeRank = FakeRanks[Rank];
                #local Rad = .05 + pow(10-FakeRank, 2) / 600;
                sphere{ VertexPoints[VertexIndex]*Factor, Rad 
                    #if(VertexRankParities[VertexIndex])
                        pigment{color rgbt TransparentDarkVertexColor}
                    #else
                        pigment{color rgbt TransparentLightVertexColor}
                    #end
                }
            #end
        }
        union{
            #for( i, 0, dimension_size(TransparentEdges, 1)-1 )
                #local Edge = TransparentEdges[i];
                #local VertexIndex1 = Edge[0] - 1;
                #local VertexIndex2 = Edge[1] - 1;
                #local Point1 = VertexPoints[VertexIndex1]*Factor;
                #local Point2 = VertexPoints[VertexIndex2]*Factor;
                #local Rank1 = VertexRanks[VertexIndex1];
                #local Rank2 = VertexRanks[VertexIndex2];
                #local FakeRank1 = FakeRanks[Rank1];
                #local FakeRank2 = FakeRanks[Rank2];
                #local Rad1 = (.05 + pow(10-FakeRank1, 2) / 600) / 3.5;
                #local Rad2 = (.05 + pow(10-FakeRank2, 2) / 600) / 3.5;
                cone{ Point1, Rad1, Point2, Rad2 }
            #end
            pigment{color rgbt TransparentEdgeColor}
        }
    }

    // SOLID VERTICES
    union{
        #for( i, 0, dimension_size(SolidVertices, 1)-1 )
            #local VertexIndex = SolidVertices[i] - 1;
            #local Rank = VertexRanks[VertexIndex];
            #local FakeRank = FakeRanks[Rank];
            #local Rad = .05 + pow(10-FakeRank, 2) / 600;
            sphere{ VertexPoints[VertexIndex]*Factor, Rad 
                #if(VertexRankParities[VertexIndex])
                    pigment{color rgbt DarkVertexColor}
                #else
                    pigment{color rgbt LightVertexColor}
                #end
            }
        #end
    }

    // SOLID EDGES
    union{
        #for( i, 0, dimension_size(SolidEdges, 1)-1 )
            #local Edge = SolidEdges[i];
            #local VertexIndex1 = Edge[0] - 1;
            #local VertexIndex2 = Edge[1] - 1;
            #local Point1 = VertexPoints[VertexIndex1]*Factor;
            #local Point2 = VertexPoints[VertexIndex2]*Factor;
            #local Rank1 = VertexRanks[VertexIndex1];
            #local Rank2 = VertexRanks[VertexIndex2];
            #local FakeRank1 = FakeRanks[Rank1];
            #local FakeRank2 = FakeRanks[Rank2];
            #local Rad1 = (.05 + pow(10-FakeRank1, 2) / 600) / 3.5;
            #local Rad2 = (.05 + pow(10-FakeRank2, 2) / 600) / 3.5;
            cone{ Point1, Rad1, Point2, Rad2 }
        #end
        pigment{color rgbt EdgeColor}
    }

    // FACES
    union{
        #for( i, 0, dimension_size(Faces, 1)-1 )
            #local FaceArray = Faces[i];
            #local LenOfFaceArray = dimension_size(FaceArray, 1);
            polygon{ LenOfFaceArray,
                #for(VertexIndexInFace, 0, LenOfFaceArray-1)
                    #local VertexIndexInPolytope = FaceArray[VertexIndexInFace] - 1;
                    VertexPoints[VertexIndexInPolytope]*Factor
                #end
            }
        #end
        pigment{color rgbt RedFaceColor}
    }
    
    rotate -90*x
    rotate 4*y
    rotate 4*z
}

File history

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

Date/TimeThumbnailDimensionsUserComment
current20:26, 31 March 2018Thumbnail for version as of 20:26, 31 March 20183,624 × 3,990 (852 KB)Watchduck (talk | contribs)

Metadata