POV-Ray : Newsgroups : povray.general : Pov 4.00 question Server Time
7 Aug 2024 07:15:42 EDT (-0400)
  Pov 4.00 question (Message 51 to 60 of 73)  
<<< Previous 10 Messages Goto Latest 10 Messages Next 10 Messages >>>
From: Peter J  Holzer
Subject: Re: Pov 4.00 question
Date: 2 Feb 2002 10:01:13
Message: <slrna5npcm.1ag.hjp-usenet@teal.h.hjp.at>
On 2002-01-30 21:55, Warp <war### [at] tagpovrayorg> wrote:
> Jan Walzer <jan### [at] lzernet> wrote:
> : you mean, if it would something like the following, it wouldn't be OO ?
> 
>   Precisely. What you described is a typical modular language.
>   Modular languages (eg. Modula 2) can have classes, member variables,
> member functions, public and private parts, etc, but if they don't support
> inheritance and dynamic binding, they are not OO.

Modula 2 doesn't have classes (unless you have a very different concept
of "class" than me - to me a class is a set of similar things - if there
can by definition be only one thing per class, its not a class).
Modules are nothing more than name spaces. It does have dynamic binding, though.

	hp


-- 
   _  | Peter J. Holzer    |
|_|_) | Sysadmin WSR       | In case of emergency break laws of physics.
| |   | hjp### [at] hjpat         |
__/   | http://www.hjp.at/ | 	-- Stephen Baxter


Post a reply to this message

From: Christopher James Huff
Subject: Re: Possible POV Object Scheme (was Re: Pov 4.00 question)
Date: 2 Feb 2002 11:42:08
Message: <chrishuff-1C20F9.11432302022002@netplex.aussie.org>
In article <Xns### [at] 204213191226>,
 Jordan <hookflash@_hotmail_.com> wrote:

> I *really* hope the sdl gets completely redone for pov 4.  Imo, an object-
> oriented approach would be much cleaner & prettier.  I would love to see a 
> more powerful sdl (cleaner (no more '{'s and '#'s, for example),

No more '{'s? That would make it much harder to read, not to mention 
more typing. What would you do, replace them with "begin" and "end" 
keywords, like pascal?
I'd eliminate the existing #end keyword, replacing it with {} blocks. 
The "#" character would only be used for "preprocessor" directives.


> user- defined data types,

Just the ability to attach variables and macros to objects should be 
enough here...you could do things like a lens flare "object". If there 
were object references, you could even make a linked list...


> Has anyone considered using an existing scripting language, such as 
> Lua or Python, as the pov sdl?  

These languages aren't really made for scene description...you would 
have to modify them pretty heavily before you got something that looked 
like a scene description language instead of an API.
I've seen Lua before...it looks very interesting. It seems to base 
everything on associative arrays.


> This is *exactly* the sort of thing these langs were designed for.

Not really...

-- 
Christopher James Huff <chr### [at] maccom>
POV-Ray TAG e-mail: chr### [at] tagpovrayorg
TAG web site: http://tag.povray.org/


Post a reply to this message

From: Kevin Wampler
Subject: Re: Possible POV Object Scheme (was Re: Pov 4.00 question)
Date: 2 Feb 2002 22:54:16
Message: <3C5CB5DB.7970FB10@u.arizona.edu>
Jordan wrote:
>  Has
> anyone considered using an existing scripting language, such as Lua or
> Python, as the pov sdl?

In the current scene I'm working on I have been using Icon extensively
to generate Pov code.  It's a bit awkward with vectors since there is no
operator overloading (so I have things like add(v1, v2)), but other
features of the language, especially backtracking combined with
goal-directed evaluation have made it quite worth my while.  While I do
think that there are many aspects of languages which could make Pov
scripting nicer and easier (I know there's some parts of Icon I would
love to have in there), for the most part I have found that writing
programs in other languages to output Pov code is not too much harder
(with the exception of some missing functions, like trace) than I
imagine writing in a modified Pov sdl would be.  After all,
macro("name", a, b, c, ... ) as I have been writing in Icon isn't much
harder than the #macro name(a, b, c , ... ) I would write in Pov.

	~Kevin Wampler~


Post a reply to this message

From: Thorsten Froehlich
Subject: Re: Possible POV Object Scheme (was Re: Pov 4.00 question)
Date: 3 Feb 2002 04:45:13
Message: <3c5d06a9@news.povray.org>
In article <3C5CB5DB.7970FB10@u.arizona.edu> , Kevin Wampler 
<wam### [at] uarizonaedu>  wrote:

> In the current scene I'm working on I have been using Icon extensively
> to generate Pov code.

Don't even get me started on Icon.  With its random (well, random to any sane
person) sequences of characters being operators, it can only appear a useful
language to those who designed it.  For everybody else its useless syntax gets
in the way all time.  Readability of a programming language is the most
important asset, and the designers of Icon did a good job.  Given L is a list,
who could tell "every i:=1 to *L/2 do L[i]:=:L[-i]" reverses it?  Not that is
is to be considered obfuscated code at all, no, this is how it is presented in
books that want to teach the language!

    Thorsten

____________________________________________________
Thorsten Froehlich
e-mail: fro### [at] iitedu


Post a reply to this message

From: Ron Parker
Subject: Re: Possible POV Object Scheme (was Re: Pov 4.00 question)
Date: 3 Feb 2002 10:36:38
Message: <slrna5qm88.91d.ron.parker@fwi.com>
On Sun, 03 Feb 2002 10:45:10 +0100, Thorsten Froehlich wrote:
> 
> Given L is a list,
> who could tell "every i:=1 to *L/2 do L[i]:=:L[-i]" reverses it?  

Hm, that would work in Perl, too, with very few modifications.  

Of course, @L = reverse @L would work, too...

-- 
#local R=<7084844682857967,0787982,826975826580>;#macro L(P)concat(#while(P)chr(
mod(P,100)),#local P=P/100;#end"")#end background{rgb 1}text{ttf L(R.x)L(R.y)0,0
translate<-.8,0,-1>}text{ttf L(R.x)L(R.z)0,0translate<-1.6,-.75,-1>}sphere{z/9e3
4/26/2001finish{reflection 1}}//ron.parker@povray.org My opinions, nobody else's


Post a reply to this message

From: Thorsten Froehlich
Subject: Re: Possible POV Object Scheme (was Re: Pov 4.00 question)
Date: 3 Feb 2002 10:59:10
Message: <3c5d5e4e@news.povray.org>
In article <slr### [at] fwicom> , Ron Parker 
<ron### [at] povrayorg>  wrote:

>> Given L is a list,
>> who could tell "every i:=1 to *L/2 do L[i]:=:L[-i]" reverses it?
>
> Hm, that would work in Perl, too, with very few modifications.
>
> Of course, @L = reverse @L would work, too...

I picked a short example.  Below is a scanner, also given as *educational*
example (from http://www.iit.edu/~tc/), in particular note sequences like
"||:= =", or the operators for connecting strings, because that is what the
"++" does.  Now guess what the "?" does!

Basically all operators are unqiue for each data type, which gives you a farm
of operators.  In order to implement those you end up with other interesting
character sequences like "~==="...

    Thorsten


procedure scan()
local t,c,b
static whiteSpace,initIdChars,idChars,hexdigits,commentDepth,commentLineNo
initial {
 /inputFile := &input
 inputLineNumber := 1
 inputColumn := 1
 inputLine := read(inputFile)
 eoiToken := &null
 whiteSpace := &ascii[1:34] #control ++ blank
 initIdChars := &letters
 hexdigits := &digits ++ 'ABCDEF'
 idChars := &letters ++ &digits ++ '$_'
 keywordSet := set([
  "DEF","VAL","while","bu"
 ])
}
if \eoiToken then return eoiToken
repeat inputLine ? {
 tab(inputColumn)
 tab(many(whiteSpace))
 c := &pos
 if b := (tab(any('+-'))|"") ||
   tab(many(&digits)) then {
  if b := b || fractionPart() ||
      scaleFactor() then {
   t := Token("signedFloat",b,
    inputLineNumber,c)
  } else if b ||:= fractionPart() then {
   t := Token("signedFloat",b,
    inputLineNumber,c)
  } else if b ||:= ="." || scaleFactor() then {
   t := Token("signedFloat",b,
    inputLineNumber,c)
  } else {
   t := Token("signedInt",b,
    inputLineNumber,c)
  }
  inputColumn := &pos
  return t
 } else
  if any(initIdChars) then {
  t := Token("ident",tab(many(idChars)),
   inputLineNumber,c)
  inputColumn := &pos
  if member(keywordSet,t.body) then
   t.type := t.body
  return t
 } else
  if b := =("~=" | ">=" | "<=" | "->") then {
  inputColumn := &pos
  return Token(b,b,inputLineNumber,c)
 } else
  if ="(*" then {
  inputColumn := &pos
  commentDepth := 1
  commentLineNo := inputLineNumber
  while commentDepth > 0 do {
   tab(upto('*(')|0)
   if pos(0) then {
       &pos := 1
       inputLineNumber +:= 1
       if not (&subject :=
     inputLine := read(inputFile))
       then {
    eoiToken := Token("EOI","EOI",
     inputLineNumber,1)
    write("end of input in comment beginning at ",
     commentLineNo)
    return eoiToken
       }
    } else if ="*)" then {
     commentDepth -:= 1
    } else if ="(*" then {
     commentDepth +:= 1
    } else {
     move(1)
    }
  }
  inputColumn := &pos
 } else
  if b := tab(any('\',=()[]<>+-*/@;:.')) then {
  inputColumn := &pos
  return Token(b,b,inputLineNumber,c)
 } else
  if pos(0) then {
  inputColumn := 1
  inputLineNumber +:= 1
  if not (inputLine := read(inputFile)) then {
   eoiToken := Token("EOI","EOI",
     inputLineNumber,1)

   return eoiToken
  }
 } else
  if ="\"" then {
  b := tab(find("\""))
  if not( = "\"" ) then {
   write("unterminated string at ",
    inputLineNumber," ",c)
  }
  t := Token("string",b,inputLineNumber,c)
  inputColumn := &pos
  return t
 } else
  {
  write("unexpected character: ",move(1),
   " at line ",inputLineNumber," column ",c)
  inputColumn := &pos
 }
}
end


Post a reply to this message

From: Hermann Voßeler
Subject: Re: Possible POV Object Scheme (was Re: Pov 4.00 question)
Date: 14 Feb 2002 06:56:03
Message: <3C6BA3F8.7010104@webcon.de>
Warp wrote:

> 
>   I don't understand why it would be "more powerful" and "cleaner" with
> no '{'s and '#'s.
>   Specially the lack of '{'s would make it uglier and harder to write and
> read.
>   (No, I *DON'T* want to start writing 'begin' and 'end' like in Pascal.)
> 
> 

may I throw in my $.02 on this?

do you know the haskell (funcitonal) programming language?


they use a indentation rule to figure out when a statement belongs to 
a block. As long as you indent new lines more than the line that 
started the block, the compiler knows you want to stay within that 
block. As soon as you indent lesser, it adds a implicit "}".
Works great.

For povray SDL this whould mean:

object sphere
   <0 0 1> 1.0
   texture
      pigment colour rgb(1, 1, 0)
      finish ambient 0.2
             diffuse 0.6
             metallic

camera location <0 0 0>
        look_at <0 0 1>




Post a reply to this message

From:
Subject: Re: Possible POV Object Scheme (was Re: Pov 4.00 question)
Date: 14 Feb 2002 07:12:43
Message: <7aan6uohose2fi918tja79tdn80kpvv7kt@4ax.com>

wrote:
> they use a indentation rule to figure out when a statement belongs to 
> a block

But in case of complicated mesh2 it could be horrible wasting of drive space.

ABX


Post a reply to this message

From: Nekar Xenos
Subject: Re: Possible POV Object Scheme (was Re: Pov 4.00 question)
Date: 14 Feb 2002 07:17:32
Message: <3c6baadc@news.povray.org>

news:3C6### [at] webconde...
> Warp wrote:
>
> >
> >   I don't understand why it would be "more powerful" and "cleaner" with
> > no '{'s and '#'s.
> >   Specially the lack of '{'s would make it uglier and harder to write and
> > read.
> >   (No, I *DON'T* want to start writing 'begin' and 'end' like in Pascal.)
> >
> >
>
> may I throw in my $.02 on this?
>
> do you know the haskell (funcitonal) programming language?
>
>
> they use a indentation rule to figure out when a statement belongs to
> a block. As long as you indent new lines more than the line that
> started the block, the compiler knows you want to stay within that
> block. As soon as you indent lesser, it adds a implicit "}".
> Works great.
>
> For povray SDL this whould mean:
>
> object sphere
>    <0 0 1> 1.0
>    texture
>       pigment colour rgb(1, 1, 0)
>       finish ambient 0.2
>              diffuse 0.6
>              metallic
>
> camera location <0 0 0>
>         look_at <0 0 1>
>

IMHO it's not all that practical. If you have lot's of nested loops and CSG you
could spend more time scrolling left and right than it would take to type in
'{'. It could get quite confusing. I would rather just do away with the #'s.

--
#local X=20*<-2,2,5>;#local K=2*z*X-X;#local R=seed(frame_number);blob{#while(K
.x>X.x)#local N=X+<rand(R)rand(R)1>/3;#local X=(vlength(N-K)<vlength(X-K)?N:2*X
-N);sphere{X,1,1rotate z*90}sphere{X,1,1}#end pigment{rgbt 1}interior{media{
emission<2,4,5>*5}}hollow scale.05}//   http://nekar_xenos.tripod.com/metanoia/
sphere_sweep{catmull_rom_spline 6<-8,-8>1<-8,-8>1<-8,8>1<8,-8>1<8,8>1<8,8>1
translate 20*z pigment{gradient z scale 3color_map{[0rgb<0,9,18>][1rgb 0]}}}


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.323 / Virus Database: 180 - Release Date: 2002/02/08


Post a reply to this message

From: Tom Melly
Subject: Re: Possible POV Object Scheme (was Re: Pov 4.00 question)
Date: 14 Feb 2002 07:19:46
Message: <3c6bab62$1@news.povray.org>

news:3C6### [at] webconde...

<snip>

Might be worth implementing if only to see Ken turning in his grave.... ("But
he's not dead", "No, but this will kill him")

I don't like it, although I can see the attraction. It strikes me as mixing up
style and content - which is exactly the confusion that got html/browsers in to
such trouble....


Post a reply to this message

<<< Previous 10 Messages Goto Latest 10 Messages Next 10 Messages >>>

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