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

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

Captions

Captions

Add a one-line explanation of what this file represents

Summary edit

Description

Lower cube in

One vertex in the preimage of this cube is the projection center, and this vertex is therefore not shown in the image.

Compare upper 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[8]{ 2, 3, 6, 10, 7, 11, 14, 15 };

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


#declare TransparentEdges = array[19]{ array[2]{1, 3}, 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]{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 SolidEdges = array[9]{ array[2]{1, 9}, array[2]{1, 5}, array[2]{8, 9}, array[2]{8, 12}, array[2]{4, 5}, array[2]{4, 12}, array[2]{5, 13}, array[2]{9, 13}, array[2]{12, 13} }


#declare Faces = array[3]{ array[4]{9, 1, 5, 13}, array[4]{12, 4, 5, 13}, array[4]{12, 8, 9, 13} }


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


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 (829 KB)Watchduck (talk | contribs)

Metadata