|
|
intereting idea, now I have to make a nice background for mine.....
G.
Tom Melly <tom### [at] tomandlucouk> wrote in message
news:3bfbe3ff@news.povray.org...
> Mucking about with date algorithms.
>
> The following macros will generate a calendar as a string object union for
a
> specified month/year (yucky example attached):
>
> #macro MakeTOU(MyStr, YTrans) // modify this according to taste
> text {
> ttf // font type (only TrueType format for now)
> "crystal.ttf", // Microsoft Windows-format TrueType font file name
> MyStr, // the string to create
> 1, // the extrusion depth
> 0 // inter-character spacing
> translate y*YTrans
> }
> #end
>
> #macro MakeCal(Year, Month) // main date algo. macro
> #local YTrans = 0;
> #local YChange = 1.5;
> #local TempStr = "";
> #local Months = array[12]{
> "January","Febuary","March","April",
> "May","June","July","August",
> "September","October","November","December"
> };
> #local Days = array[7]{"Su","Mo","Tu","We","Th","Fr","Sa"};
> #local Day = 1;
> #local RealYear = Year;
> #if (Month < 3)
> #local Month = Month + 12;
> #local Year=Year-1;
> #end
> #local JulDay = Day + int((153 * Month - 457) / 5) + 365 * Year +
floor(Year /
> 4) -
> floor(Year / 100) + floor(Year / 400) + 1721118.5;
> MakeTOU(concat(Months[Month-1], " ",str(RealYear,0,0)), YTrans)
>
> #local YTrans = YTrans - YChange;
>
> #local Temp = 0;
> #while(Temp<7)
> #local TempStr=concat(TempStr,Days[Temp], " ")
> #local Temp = Temp+1;
> #end
> MakeTOU(TempStr, YTrans)
> #local TempStr= "";
>
> #local YTrans = YTrans - YChange;
>
> #local JulDay = JulDay - 1;
> #local LastDay = -1;
> #local CalDay = 0;
> #local First = 1;
> #while(LastDay < CalDay)
> #local LastDay = CalDay;
> #local JulDay = JulDay + 1;
> #local ModDInt = floor(mod(JulDay + 2, 7));
> #local Z = floor(JulDay - 1721118.5);
> #local R = JulDay - 1721118.5 - Z;
> #local G = Z - 0.25;
> #local A = floor(G / 36524.25);
> #local B = A - floor(A / 4);
> #local CalYear = floor((B+G) / 365.25);
> #local C = B + Z - floor(365.25 * CalYear);
> #local CalMonth = int((5 * C + 456) / 153);
> #local CalDay = C - int((153 * CalMonth - 457) / 5) + R;
> #if (CalMonth > 12)
> #local CalYear = CalYear + 1;
> #local CalMonth = CalMonth - 12;
> #end
> #if(First | CalDay > 1)
> #local First = 0;
> #if(CalDay = 1)
> #local Temp = 0;
> #local TempStr = "";
> #while (Temp < ModDInt)
> #local TempStr = concat(TempStr, " ")
> #local Temp = Temp + 1;
> #end
> #end
> #local TempStr = concat(TempStr, str(CalDay,2,0)," ")
> #if(ModDInt = 6)
> MakeTOU(TempStr, YTrans)
> #local TempStr = "";
> #local YTrans = YTrans - YChange;
> #end
> #end
> #end
> MakeTOU(TempStr, YTrans)
> #end
>
> union{ // example
> MakeCal(2001,6)
> pigment{Red}
> translate x*-7
> translate y*4
> }
>
>
> --
> #macro G(D,E,F)#local I=array[3]{D,E,F}#local B=0;triangle{#while(
> B<3)#while(I[B])A[mod(I[B],10)]+#local I[B]=div(I[B],10);#end<-5,-
> 2,9>#local B=B+1;#end}#end #local A=array[7]{x,x*2,x*4,y,y*2,y*4,z
> }light_source{-x*6-z*9,1}mesh{G(105,10,146)G(105,246,10)G(105,56,
> 146)G(105,1256,246)G(1256,126,220)G(22156,2216,201)pigment{rgb 1}}//TM
>
>
>
Post a reply to this message
|
|