|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
While working on my 'city buildings' scene code, I made a really simple and dumb
mistake, in a #while loop.
Consider this simplified example:
// taken from "math.inc"
#declare even = function(x) {select(mod(x, 2), 0, 1, 0)}
#declare MY_VALUE = 10;
#declare C = 1;
#while(C < 20)
#if(even(C))
#declare MY_VALUE = 33; // CHANGES the value
#else
#end
#debug concat("\n","My value = ",str(MY_VALUE,1,0),"\n")
#declare C = C + 1;
#end
EXPECTED results: I assumed MY_VALUE would *alternate* between the new value of
33 and the old value. Wrong, of course.
ACTUAL results: After the first while-loop iteration, MY_VALUE changes to 33--
and remains at the new value. Because, once it's changed, there's nothing to
change it back to 10! It's so obvious now.
But I spent several *days* trying to track down this subtle mistake(!!)--
because, my code was so complex that I was looking for an equally complex reason
for the 'unexpected' results, having nothing to do with the #while loop at all
:-/ Like, perhaps the even() function wasn't working correctly! And half a
dozen other reasons.
No matter how smart you *think* you are, there will always be something to come
along and humble you.
But all is well now... :-P
---------------------------------
(The proper way to do it):
#declare MY_VALUE = 10;
#declare C = 1;
#while(C < 20)
#if(even(C))
#declare MY_VALUE = 33;
#else
#declare MY_VALUE = 10;
#end
#debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
#declare C = C + 1;
#end
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 8/2/2017 6:35 PM, Kenneth wrote:
> But I spent several*days* trying to track down this subtle mistake(!!)
The very reason I don't code. For me every line has to be debugged. ;)
--
Regards
Stephen
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Kenneth" <kdw### [at] gmailcom> wrote:
> ---------------------------------
> (The proper way to do it):
> #declare MY_VALUE = 10;
>
> #declare C = 1;
> #while(C < 20)
> #if(even(C))
> #declare MY_VALUE = 33;
> #else
> #declare MY_VALUE = 10;
> #end
> #debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
> #declare C = C + 1;
> #end
(The more efficient way to do it):
#declare C = 1;
#while(C < 20)
#declare MY_VALUE = 10;
#if(even(C))
#declare MY_VALUE = 33;
#end
#debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
#declare C = C + 1;
#end
This is why I have my weird way of doing all of the debugging with that #declare
Verbose = true
so that I just plug all the debugging statements in from the start, and then
when everything works, I just switch them ALL off without any more editing.
Been there, done that, SO many times.
Glad you got your code working and regained your sanity.
Reward yourself with an adult beverage! ;)
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Bald Eagle" <cre### [at] netscapenet> wrote:
>
> (The more efficient way to do it):
>
>
> #declare C = 1;
> #while(C < 20)
> #declare MY_VALUE = 10;
> #if(even(C))
> #declare MY_VALUE = 33;
> #end
> #debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
> #declare C = C + 1;
> #end
>
Ha! I didn't see that one either. :-( :-(
Woe is me...
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
On 02.08.2017 13:35, Kenneth wrote:
> While working on my 'city buildings' scene code, I made a really simple a
nd dumb
> mistake, in a #while loop.
>
> Consider this simplified example:
>
> // taken from "math.inc"
> #declare even = function(x) {select(mod(x, 2), 0, 1, 0)}
>
> #declare MY_VALUE = 10;
>
> #declare C = 1;
> #while(C < 20)
> #if(even(C))
> #declare MY_VALUE = 33; // CHANGES the value
> #else
> #end
> #debug concat("\n","My value = ",str(MY_VALUE,1,0),"\n")
> #declare C = C + 1;
> #end
>
>
> EXPECTED results: I assumed MY_VALUE would *alternate* between the new v
alue of
> 33 and the old value. Wrong, of course.
>
> ACTUAL results: After the first while-loop iteration, MY_VALUE changes to
33--
> and remains at the new value. Because, once it's changed, there's nothing
to
> change it back to 10! It's so obvious now.
>
> But I spent several *days* trying to track down this subtle mistake(!!)--
> because, my code was so complex that I was looking for an equally complex
reason
> for the 'unexpected' results, having nothing to do with the #while loop a
t all
> :-/ Like, perhaps the even() function wasn't working correctly! And half
a
> dozen other reasons.
>
> No matter how smart you *think* you are, there will always be something t
o come
> along and humble you.
>
> But all is well now... :-P
>
> ---------------------------------
> (The proper way to do it):
> #declare MY_VALUE = 10;
>
> #declare C = 1;
> #while(C < 20)
> #if(even(C))
> #declare MY_VALUE = 33;
> #else
> #declare MY_VALUE = 10;
> #end
> #debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
> #declare C = C + 1;
> #end
>
>
>
I know there someone, who uses POV-Ray since 1989 or so. And for two
weeks, this poor little fellow wondered, why his renders did not show
any expected bumps on the surface of an item. This poor little fellow
even managed to keep the POV-Ray community heavily occupied for these
two weeks with his strange problem. Over 60 postings were meade.
Finally, it turned out, that this little poor fellow forgot to chage his
QUALITY settings above 6.
I was that guy... :-D
We all fail, at times, while at other times, POV-Ray makes us big and
making us doing great things.
---
Diese E-Mail wurde von AVG auf Viren geprüft.
http://www.avg.com
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Sven Littkowski <I### [at] SvenLittkowskiname> wrote:
> On 02.08.2017 13:35, Kenneth wrote:
> >
> > No matter how smart you *think* you are, there will always be something t
> o come
> > along and humble you.
>
> We all fail, at times, while at other times, POV-Ray makes us big and
> making us doing great things.
I'm mostly humbled by POV-Ray. Just about everything is a challenge, or struggle
depending on how humbled I get!
Good going on the city macro Kenneth. And the space balloon Sven (I will
remember that mistake a very long time!).
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Am 02.08.2017 um 21:07 schrieb Bald Eagle:
> "Kenneth" <kdw### [at] gmailcom> wrote:
>
>> ---------------------------------
>> (The proper way to do it):
>> #declare MY_VALUE = 10;
>>
>> #declare C = 1;
>> #while(C < 20)
>> #if(even(C))
>> #declare MY_VALUE = 33;
>> #else
>> #declare MY_VALUE = 10;
>> #end
>> #debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
>> #declare C = C + 1;
>> #end
>
> (The more efficient way to do it):
>
>
> #declare C = 1;
> #while(C < 20)
> #declare MY_VALUE = 10;
> #if(even(C))
> #declare MY_VALUE = 33;
> #end
> #debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
> #declare C = C + 1;
> #end
Challenge accepted ;)
#declare MY_VALUE = 10;
#for(C,1,19)
#debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
#declare MY_VALUE = 43-MY_VALUE;
#end
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
clipka <ano### [at] anonymousorg> wrote:
> Challenge accepted ;)
>
> #declare MY_VALUE = 10;
> #for(C,1,19)
> #debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
> #declare MY_VALUE = 43-MY_VALUE;
> #end
I will have to check this out to see what it does - it looks fiendishly clever.
(someone's hogging my workbench at the moment)
(BTW - we love it when you show off. ;) )
.... and things like this virtually scream for another POV-Ray short-code contest
..... :O
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Bald Eagle" <cre### [at] netscapenet> wrote:
> clipka <ano### [at] anonymousorg> wrote:
>
> > Challenge accepted ;)
> >
> > #declare MY_VALUE = 10;
> > #for(C,1,19)
> > #debug concat("\n","My Value = ",str(MY_VALUE,1,0),"\n")
> > #declare MY_VALUE = 43-MY_VALUE;
> > #end
>
> I will have to check this out to see what it does...
>
Same here! At first appearance, it doesn't seem like it would work at all. But
it DOES work! Yes, devilishly clever.
Hmm, let's see...
1) MY_VALUE starts at 10
2) 1st #debug = 10
3) MY_VALUE changes to (43 - 10) = 33
4) 2nd #debug = 33
5) MY_VALUE changes to (43 - 33) = 10
6) 3rd #debug = 10
7) MY_VALUE changes to (43 - 10) = 33
8) 4th #debug = 33
....ETC...
Magical!
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Kenneth" <kdw### [at] gmailcom> wrote:
>
> Magical!
>
In the 16th century, the Inquisition would have burned Clipka at the stake, as a
warning to other such Necromancers :-P
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|