![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
All I can say is "why not." Calculators cost money but you can make one for
free. Actually I have my old HP48 but wanted to do this anyway.
Where I got stuck before (this is an old project which I recently came back
to) was that I needed to be able to have a whole arbitrary expression as a
string that I could display as well as evaluating it to a float that I
could plot. val() of course can convert a string literal to a float, but
val("2+2") returns the number 2.
It seemed somewhat cumbersome to do so, but I finally gave in and outputted
strings to a file, to be read back in as a macro holding an expression.
Here's that macro to create the temp file:
#macro Make_Temporary_Expression_Macro_File(Eq)
#fopen Calculator_Temp_Expression_File
"Temporary_Expression_Macro_File.tmp" write
#write (Calculator_Temp_Expression_File, "/* This is a temporary
file generated and used by calculator.pov and can be deleted without harm.
*/n")
#write (Calculator_Temp_Expression_File, "#macro Evaluate_Eq_For_X
(X) n")
#write (Calculator_Temp_Expression_File, " #declare Eq_Y = " )
#write (Calculator_Temp_Expression_File, Eq ) //the function
#write (Calculator_Temp_Expression_File, "; n#end n" )
#fclose Calculator_Temp_Expression_File
#end // end Make_Temporary_Expression_Macro_File
Any better ideas? The little temp file gets written over once for each
function and once for each expression.
The way it is now the calculator will display up to 10 funtions, and 10
expressions with their evaluated answers. Functions can be displayed as
either lines or dots, line thickness can be set for each function as well
as how frequently along the x-axis the funtion is evaluated. (200 times
seems like a good number for most.)
The viewable region is adjustable (-2*pi to 2*pi for x and -2 to 2 for y as
displayed here) and each funtion will only be plotted where they coincide
with that region; they do not get scaled independantly as they don't have
independant ranges. I also haven't gotten around to making auto-adjusting
hash marks for the axis yet.
Thanks,
Charles
Post a reply to this message
Attachments:
Download 'calculator.png' (79 KB)
Preview of image 'calculator.png'
![calculator.png](/povray.binaries.images/attachment/%3Cweb.43a1cea9363166ed2ed1de200%40news.povray.org%3E/calculator.png?ttop=443866&toff=4800&preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Charles C wrote:
> All I can say is "why not." Calculators cost money but you can make one for
> free. Actually I have my old HP48 but wanted to do this anyway.
>
> Where I got stuck before (this is an old project which I recently came back
> to) was that I needed to be able to have a whole arbitrary expression as a
> string that I could display as well as evaluating it to a float that I
> could plot. val() of course can convert a string literal to a float, but
> val("2+2") returns the number 2.
>
> It seemed somewhat cumbersome to do so, but I finally gave in and outputted
> strings to a file, to be read back in as a macro holding an expression.
> Here's that macro to create the temp file:
>
> #macro Make_Temporary_Expression_Macro_File(Eq)
> #fopen Calculator_Temp_Expression_File
> "Temporary_Expression_Macro_File.tmp" write
> #write (Calculator_Temp_Expression_File, "/* This is a temporary
> file generated and used by calculator.pov and can be deleted without harm.
> */n")
> #write (Calculator_Temp_Expression_File, "#macro Evaluate_Eq_For_X
> (X) n")
> #write (Calculator_Temp_Expression_File, " #declare Eq_Y = " )
> #write (Calculator_Temp_Expression_File, Eq ) //the function
> #write (Calculator_Temp_Expression_File, "; n#end n" )
> #fclose Calculator_Temp_Expression_File
> #end // end Make_Temporary_Expression_Macro_File
>
> Any better ideas? The little temp file gets written over once for each
> function and once for each expression.
I did something like this for an AmigaBasic program about a dozen years
ago. I had the program use RPN for the expressions, because they're
much simpler to parse.
Regards,
John
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Hehe I like reverse polish on my HP, but I wanted to take advantage of
whatever POV already knew how to do... E.g. any function or user created
macro that can return a float will work. For a while I was considering
making a string parser (a string parser within a parsed-string/sdl!) to
read in the numbers digit by digit and so on, but I thought that'd be a lot
more work than doing this writing a file and reading it back. Actually
back in college I did write such a parser for a C class but it only
supported the basic +-/x%
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Charles C wrote:
> Hehe I like reverse polish on my HP
Is reverse polish done with something like this??
finish{
phong -1
}
Cheers!
Rick Measham
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Rick Measham <rickm*at%isite.net.au> wrote:
> Charles C wrote:
> > Hehe I like reverse polish on my HP
>
> Is reverse polish done with something like this??
>
> finish{
> phong -1
> }
>
> Cheers!
> Rick Measham
almost...
#declare notation =
finish{
phong -1
roughness 1
}
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Joanne Simpson" <cor### [at] onewhiteraven com> wrote in message
news:web.43a2694e11ef9f35dc45bc820@news.povray.org...
> Rick Measham <rickm*at%isite.net.au> wrote:
> > Charles C wrote:
> > > Hehe I like reverse polish on my HP
> >
> > Is reverse polish done with something like this??
> >
> > finish{
> > phong -1
> > }
> >
> > Cheers!
> > Rick Measham
>
> almost...
>
> #declare notation =
> finish{
> phong -1
> roughness 1
> }
I'm quite sure roughness has no effect on phong, only on specular, but I
might be wrong of course :)
cu!
--
#macro G(b,e)b+(e-b)*C/50#end#macro _(b,e,k,l)#local C=0;#while(C<50)
sphere{G(b,e)+3*z.1pigment{rgb G(k,l)}finish{ambient 1}}#local C=C+1;
#end#end _(y-x,y,x,x+y)_(y,-x-y,x+y,y)_(-x-y,-y,y,y+z)_(-y,y,y+z,x+y)
_(0x+y.5+y/2x)_(0x-y.5+y/2x) // ZK http://www.povplace.com
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
news:43a298c5$1@news.povray.org...
I'm quite sure roughness has no effect on phong, only on specular, but I
might be wrong of course :)
I think you're right, IIRC, the corresponding parameter for phong is
phong_size
Marc
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: "Jérôme M. Berger"
Subject: Re: graphing calculator - why not :)
Date: 16 Dec 2005 16:36:15
Message: <43a3334f@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Joanne Simpson wrote:
> Rick Measham <rickm*at%isite.net.au> wrote:
>>Charles C wrote:
>>
>>Is reverse polish done with something like this??
>>
>>finish{
>> phong -1
>>}
>>
> almost...
>
> #declare notation =
> finish{
> phong -1
> roughness 1
> }
>
Nonono, reverse polish is done with this:
- -1
phong
1
phong_size
finish
;)
Jerome
- --
******************************
* Jerome M. Berger *
* mailto:jeb### [at] free fr *
* http://jeberger.free.fr/ *
******************************
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
iD8DBQFDozNOqIYJdJhyixIRAub+AKCf98kThdJ8BoEUINFQ9dmf4QA1RwCfYkRB
rC3rYx13ylcG23xj9aicVt8=
=xhQQ
-----END PGP SIGNATURE-----
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
High!
> Nonono, reverse polish is done with this:
> - -1
> phong
> 1
> phong_size
> finish
>
> ;)
Hehe... the whole sub-thread wouldn't have started if Charles had used
an upper case "p" for his "polish"... back in 1984, I read in the
then-popular German computer magazine "RUN" an article about Forth, a
programming language which just had been made available for the
Commodore 64. I really do not know much about Forth, but I remember that
its design strongly is based on stacks, which leads to a syntax which is
rather strange compared to other programming language: the "Inverted
Polish Notation". Obviously, (one of) the mathematician(s) who invented
Forth hailed from Poland...
See you in Khyberspace!
Yadgar
Now playing: Tel Aviv (Duran Duran)
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>High!
>
>> Nonono, reverse polish is done with this:
>> - -1
>> phong
>> 1
>> phong_size
>> finish
>>
>> ;)
>
>
>Hehe... the whole sub-thread wouldn't have started if Charles had used
>an upper case "p" for his "polish"... back in 1984, I read in the
>then-popular German computer magazine "RUN" an article about Forth, a
>programming language which just had been made available for the
>Commodore 64. I really do not know much about Forth, but I remember that
>its design strongly is based on stacks, which leads to a syntax which is
>rather strange compared to other programming language: the "Inverted
>Polish Notation". Obviously, (one of) the mathematician(s) who invented
>Forth hailed from Poland...
>
>See you in Khyberspace!
The term "Reverse Polish Notation" was coined by Hewlett-Packard
engineers to describe the method used in their early calculators. I
guess they had trouble pronouncing "Reverse Lukasiewicz Notation". (The
"L" should be pronounced something like a "W")
http://www-history.mcs.st-and.ac.uk/Mathematicians/Lukasiewicz.html
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |