|
|
Below is the source code for the image I posted here:
http://news.povray.org/povray.binaries.images/message/<4b5a4460%40news.povray.org>
Newsgroup: povray.binaries.images
Date: 23rd January 2010
Subject: Sheared supertori
Tor Olav
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
// Copyright 2010 by Tor Olav Kristensen, except for the textures
// Email: t o r . o l a v . k [_A_T_] g m a i l . c o m
// http://subcube.com
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#version 3.6;
#include "colors.inc"
#include "rad_def.inc"
#include "shapes.inc" // For Supertorus() macro
//#include "transforms.inc" // For Shear_Trans() macro
global_settings {
radiosity { Rad_Settings(Radiosity_OutdoorHQ, on, off) }
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#macro ShearTrans(vA, vB, vC)
#if (vdot(vA, vcross(vB, vC)) = 0)
#error "Bad vectors passed to ShearTrans macro"
#else
transform {
matrix <
vA.x, vA.y, vA.z,
vB.x, vB.y, vB.z,
vC.x, vC.y, vC.z,
0, 0, 0
>
}
#end // if
#end // macro ShearTrans
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
// Modified versions of a texture once made by Gilles Tran
// His website is here: http://www.oyonale.com
#declare Gilles_Tex_Mod1 =
texture {
pigment {
bozo
color_map {
[ 0 color White*0.7 ]
[ 1 color White*1.1 ]
}
}
normal {
agate 0.3
scale <1, 1, 1>*1.6
}
finish {
ambient color Black
diffuse 0.8
specular 0.1
roughness 0.1
metallic
brilliance 1
}
scale <1, 1, 1>*1.6
}
#declare Gilles_Tex_Mod2 =
texture {
pigment {
crackle solid
color_map {
[ 0 color White*0.5 ]
[ 1 color White*0.9 ]
}
}
normal {
granite 0.9
scale <1, 1, 1>*3
}
finish {
ambient color Black
diffuse 0.8
specular 0.1
roughness 0.1
metallic
brilliance 1
}
scale <1, 1, 1>*1.6
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#declare Rmaj = 4.0;
#declare Rmin = 1.0;
#declare Cmaj = 1/2;
#declare Cmin = 1/2;
#declare Acc = 1e-3;
#declare MaxGrad = 1.0;
#declare S_Torus = Supertorus(Rmaj, Rmin, Cmaj, Cmin, Acc, MaxGrad)
#declare S = 1.0; // Amount of shearing
#declare Rbig = Rmaj + Rmin;
#declare T = 2*Rbig;
#declare D = 3*Rbig;
#declare ZZ =
object {
S_Torus
ShearTrans(
<+1, 0, 0>,
< 0, +1, 0>,
< 0, 0, +1>
)
translate < 0, 0, 0>
}
#declare PZ =
object {
S_Torus
ShearTrans(
<+1, 0, 0>,
<+S, +1, 0>,
< 0, 0, +1>
)
translate <+T, 0, 0>
}
#declare MZ =
object {
S_Torus
ShearTrans(
<+1, 0, 0>,
<-S, +1, 0>,
< 0, 0, +1>
)
translate <-T, 0, 0>
}
#declare ZP =
object {
S_Torus
ShearTrans(
<+1, 0, 0>,
< 0, +1, +S>,
< 0, 0, +1>
)
translate < 0, 0, +T>
}
#declare ZM =
object {
S_Torus
ShearTrans(
<+1, 0, 0>,
< 0, +1, -S>,
< 0, 0, +1>
)
translate < 0, 0, -T>
}
#declare PP =
object {
S_Torus
ShearTrans(
<+1, 0, 0>,
<+S, +1, +S>,
< 0, 0, +1>
)
translate <+T, 0, +T>
}
#declare MP =
object {
S_Torus
ShearTrans(
<+1, 0, 0>,
<-S, +1, +S>,
< 0, 0, +1>
)
translate <-T, 0, +T>
}
#declare MM =
object {
S_Torus
ShearTrans(
<+1, 0, 0>,
<-S, +1, -S>,
< 0, 0, +1>
)
translate <-T, 0, -T>
}
#declare PM =
object {
S_Torus
ShearTrans(
<+1, 0, 0>,
<+S, +1, -S>,
< 0, 0, +1>
)
translate <+T, 0, -T>
}
#declare Wall1 =
union {
object { ZZ }
object { PZ }
object { MZ }
object { ZP }
object { ZM }
object { PP }
object { MP }
object { MM }
object { PM }
}
#declare Wall2 =
union {
// object { ZZ }
object { PZ }
object { MZ }
object { ZP }
object { ZM }
object { PP }
object { MP }
object { MM }
object { PM }
}
union {
// PosY
object {
Wall1
rotate 0*z
translate +D*y
}
// NegY
object {
Wall1
rotate 180*z
translate -D*y
}
// NegX
object {
Wall1
rotate +90*z
translate -D*x
}
// PosX
object {
Wall2
rotate -90*z
translate +D*x
}
// NegZ
object {
Wall1
rotate -90*x
translate -D*z
}
// PosZ
object {
Wall1
rotate +90*x
translate +D*z
}
texture { Gilles_Tex_Mod1 }
// pigment { color White }
}
object {
ZZ
texture { Gilles_Tex_Mod1 }
// pigment { color White }
rotate 30*y
translate (T + D)*x
translate -D*y
}
plane {
y, -(D + S)
texture { Gilles_Tex_Mod2 }
// pigment { color White }
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
sky_sphere {
pigment {
gradient y
color_map {
[ 0 White ]
[ 1 rgb <0.25, 0.46, 0.80>*0.9 ]
}
}
}
light_source {
<4, 3, 4>*30
color rgb <0.76, 0.62, 0.34>
area_light
2*x, 2*z,
4, 4
circular
orient
adaptive 1
jitter
}
/*
light_source {
<4, 3, 4>*30
color White
// shadowless
}
*/
camera {
location <5, 4, -6>*10
look_at <-8, 0, -8>
angle 70
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
Post a reply to this message
|
|