// Persistence Of Vision Ray Tracer Scene Description File
// -------------------------------------------------------
// File: @(#)splines.pov
// Description: Comparison of spline types.
// Features demonstrated: akima_spline, spline,
// Creation Date: $ 13 Aug 2004, 15:54:05 $
// Last modified: $ 13 Aug 2004, 22:39:12 $
// Author: Wlodzimierz ABX Skiba
//
// -w768 -h1024 +a0.3
#version unofficial MegaPov 1.1;
#include "colors.inc"
camera {
orthographic
right 1.1*x
up 1.1*y*image_height/image_width
direction z
location -z
}
#macro Spline_Entries()
0 <0,0>
1 <1,1>
2 <2,0>
3 <3,.5>
4 <4,0>
5 <5,.7>
6 <7,0>
7 <6.5,1>
8 <8,1>
9 <8,0>
10 <10,1>
#end
#declare Spline_Base=spline{ Spline_Entries() }
#declare Control_Point_Pigment=pigment{color Red}
#declare Control_Point_Radius=0.05;
#declare Spline_Pigment=pigment{color Black}
#declare Spline_Radius=0.02;
#declare Spline_Accuracy=0.005;
#declare Position = 0;
#macro Draw_Spline(Spline,Name)
union{
#local Counter = 0;
#while (Counter < dimension_size(Spline))
#local Center = Spline_Base(Counter);
sphere{
Control_Point_Radius
pigment{ Control_Point_Pigment }
}
#if (Counter>0)
cylinder{
Spline_Radius/2
pigment{ color Gray }
}
#end
#local Center = Spline(Counter);
#local C = Spline_Accuracy;
#while (C < 1)
#local New_Center = Spline(Counter + C);
#if(vlength(Center-New_Center)!=0)
sphere{
Spline_Radius
pigment{ Spline_Pigment }
}
cylinder{
Spline_Radius
pigment{ Spline_Pigment }
}
#end
#local Center = New_Center;
#local C=C+Spline_Accuracy;
#end
#local Counter = Counter + 1;
#end
text{
ttf "crystal.ttf" Name 0.1,0
scale 1/2.5
translate <11,.5,0>
pigment{color blue 1}
}
scale 1/18
translate -x/2
#declare Position = Position + 1;
translate -y*Position/10
}
#end
background{1}
#default{finish{ambient 1 diffuse 0}}
union{
Draw_Spline(spline{Spline_Base linear_spline},"linear_spline")
Draw_Spline(spline{Spline_Base quadratic_spline },"quadratic_spline")
Draw_Spline(spline{Spline_Base cubic_spline },"cubic_spline")
Draw_Spline(spline{Spline_Base natural_spline },"natural_spline")
Draw_Spline(spline{Spline_Base akima_spline },"akima_spline")
Draw_Spline(spline{Spline_Base tcb_spline },"tcb_spline")
Draw_Spline(spline{tcb_spline tension -1 bias 1 Spline_Entries()},"tcb_spline tension -1 bias 1")
Draw_Spline(spline{tcb_spline continuity 2 Spline_Entries()},"tcb_spline continuity 2")
Draw_Spline(spline{Spline_Base basic_x_spline },"basic_x_spline")
Draw_Spline(spline{Spline_Base extended_x_spline},"extended_x_spline")
Draw_Spline(spline{extended_x_spline freedom_degree .5 Spline_Entries()},"extended_x_spline freedom_degree 0.5")
Draw_Spline(spline{Spline_Base general_x_spline},"general_x_spline")
Draw_Spline(spline{general_x_spline freedom_degree .5 Spline_Entries()},"general_x_spline freedom_degree 0.5")
Draw_Spline(spline{general_x_spline freedom_degree -1 Spline_Entries()},"general_x_spline freedom_degree -1")
translate y*Position/20
}