POV-Ray : Newsgroups : povray.general : L-Systems in Povray : Re: L-Systems in Povray Server Time
1 Jun 2024 22:07:47 EDT (-0400)
  Re: L-Systems in Povray  
From: ingo
Date: 12 Jul 2023 13:15:00
Message: <web.64aedf3b453cebfc17bac71e8ffb8ce3@news.povray.org>
"ingo" <nomail@nomail> wrote:

>
> #macro Lvertices(Lstr)
>   #local T_Pos = <0, 0, 0>; // <x, y, z>
>   #local AngleZZ = 0;
>   //#local Curr_Item = 0;
>   #declare Return = array; //{<T_Pos.x, T_Pos.y, T_Pos.z>};
>  #declare Return[0] = <T_Pos.x, T_Pos.y, T_Pos.z>;
>   #for (i, 0, strlen(Lstr)-1) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>     #local CurrentSymbol = substr(Lstr, i, 1);
>     #ifdef (BuildRules[CurrentSymbol])
>       #switch (BuildRules[CurrentSymbol])
>         #case(70)
>           #debug "70 F \n"
>           #local T_Pos = F(T_Pos, AngleZZ);
>         #break
>         #case(43)
>           #debug "43 + \n"
>           #local AngleZZ = YawR(AngleZZ);
>         #break
>         #case(45)
>           #debug "45 - \n"
>           #local AngleZZ = YawL(AngleZZ);
>         #break
>         #case(124)
>           #debug "124 | \n"
>           #local AngleZZ = Turn(AngleZZ);
>         #break
>
>         #case(91)
>           #debug "91 [ \n"
>           #local Curr_Item = Push(T_Pos, AngleZZ);
>         #break
>
>
>         #case(93)
>           #debug "93 ] \n"
>           #local Curr_Item = Pop(T_Pos, AngleZZ);
>         #break
>
>       #end
>       #local InArr = Return[dimension_size(Return,1)-1];
>       #if (T_Pos.x != InArr.x | T_Pos.y != InArr.y | T_Pos.z != InArr.z)
>         #declare Return[dimension_size(Return,1)] = <T_Pos.x, T_Pos.y, T_Pos.z>;
>       #end
>     #end
>   #end
>   #declare Vertices = Return;
>   Vertices
> #end

  try: #for (i, 0, strlen(Lstr)) in the macro. The it runs and renders a small
white stick? But with Iterations = 2 it fails.

ingo


Post a reply to this message

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