POV-Ray : Newsgroups : povray.binaries.images : Calendar Macro [10.8kb] Server Time
19 Nov 2024 15:30:17 EST (-0500)
  Calendar Macro [10.8kb] (Message 1 to 10 of 26)  
Goto Latest 10 Messages Next 10 Messages >>>
From: Tom Melly
Subject: Calendar Macro [10.8kb]
Date: 21 Nov 2001 12:27:27
Message: <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


Attachments:
Download 'c1.jpg' (11 KB)

Preview of image 'c1.jpg'
c1.jpg


 

From: Jan Walzer
Subject: Re: Calendar Macro [10.8kb]
Date: 21 Nov 2001 12:51:37
Message: <3bfbe9a9@news.povray.org>
The week starts with Monday!!!
I don't work at Sundays ... why does everybody do this wrong ?

SCNR ....

--
Jan Walzer <jan### [at] lzernet>


Post a reply to this message

From: ingo
Subject: Re: Calendar Macro [10.8kb]
Date: 21 Nov 2001 12:52:53
Message: <Xns9160C011FF3C1seed7@povray.org>
in news:3bfbe3ff@news.povray.org Tom Melly wrote:

> Mucking about with date algorithms.
> 

Moving :
  MakeTOU(concat(Months[Month-1], " ",str(RealYear,0,0)), YTrans)
to the line above:
  #if (Month < 3)
prevents an error for the months jan and feb.


Ingo

-- 
Photography: http://members.home.nl/ingoogni/
Pov-Ray    : http://members.home.nl/seed7/


Post a reply to this message

From: Marc-Hendrik Bremer
Subject: OT Re: Calendar Macro [10.8kb]
Date: 21 Nov 2001 13:41:59
Message: <3bfbf577@news.povray.org>
Jan Walzer schrieb in Nachricht <3bfbe9a9@news.povray.org>...
>The week starts with Monday!!!
>I don't work at Sundays ... why does everybody do this wrong ?


OT: Do you have to earn your free day by the work of the week or do you get
it for free and therefore are able to work the next few days?

Marc-Hendrik


Post a reply to this message

From: Tom Melly
Subject: Re: Calendar Macro [10.8kb]
Date: 21 Nov 2001 14:56:34
Message: <3bfc06f2@news.povray.org>
"ingo" <ing### [at] homenl> wrote in message
news:Xns### [at] povrayorg...
>
> Moving :
>   MakeTOU(concat(Months[Month-1], " ",str(RealYear,0,0)), YTrans)
> to the line above:
>   #if (Month < 3)
> prevents an error for the months jan and feb.
>
>
> Ingo
>

Already dealt with - RealYear is a copy of Year prior to the jan-mar thing -
However, your suggestion save needing RealYear in the first place... Ta.

I've got a bit of enhancement and optomising to do, and will post an update
later.


Post a reply to this message

From: Tom Melly
Subject: Re: Calendar Macro [10.8kb]
Date: 21 Nov 2001 14:57:21
Message: <3bfc0721@news.povray.org>
"Jan Walzer" <jan### [at] lzernet> wrote in message
news:3bfbe9a9@news.povray.org...
> The week starts with Monday!!!
> I don't work at Sundays ... why does everybody do this wrong ?
>

I'll parametise that in the next version (as well as height-offset and
suchlike).


Post a reply to this message

From: Bill DeWitt
Subject: Re: Calendar Macro [10.8kb]
Date: 21 Nov 2001 15:14:30
Message: <3bfc0b26$1@news.povray.org>
"Tom Melly" <tom### [at] tomandlucouk> wrote in message
news:3bfbe3ff@news.povray.org...
> Mucking about with date algorithms.

    Do you have the getdate.bat system to make povray read the system clock
and generate today's calendar?


Post a reply to this message

From: Tom Melly
Subject: Re: Calendar Macro [10.8kb]
Date: 21 Nov 2001 18:31:05
Message: <3bfc3939$1@news.povray.org>
Okay, posted improved version with more params to b.scene-files...


Post a reply to this message

From: Tom Melly
Subject: Re: Calendar Macro [10.8kb]
Date: 21 Nov 2001 18:32:56
Message: <3bfc39a8$1@news.povray.org>
"Bill DeWitt" <bde### [at] cflrrcom> wrote in message
news:3bfc0b26$1@news.povray.org...
>
>     Do you have the getdate.bat system to make povray read the system
clock
> and generate today's calendar?
>

No, the scene uses pov lang to implement algorithms I found on a website (or
did you mean in general?)


Post a reply to this message

From: blessing
Subject: Re: Calendar Macro [10.8kb]
Date: 21 Nov 2001 21:09:00
Message: <3bfc5e3c@news.povray.org>
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

Goto Latest 10 Messages Next 10 Messages >>>

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.