POV-Ray : Newsgroups : povray.newusers : Newbie syntax problem Server Time
4 Sep 2024 22:19:13 EDT (-0400)
  Newbie syntax problem (Message 4 to 13 of 23)  
<<< Previous 3 Messages Goto Latest 10 Messages Next 10 Messages >>>
From: Johannes Dahlstrom
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 11:51:09
Message: <3dcfdffc@news.povray.org>
hughes, b. wrote:

> A prism for a dodecahedron? 

I think he meant a (extruded) regular 12-sided polygon. Don't know if it 
has an "official" name, but his guess, "dodecagon", sounds logical to me...


Post a reply to this message

From: LibraryMan
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 12:40:06
Message: <3DCFEA8E.4994C2E@att.net>
Correct, that is what I meant. :-)  "Dodeca-" I took to mean the prefix
for twelve, and "gon" I thought would be the suffix for a multi-sided
geometric shape.
-MW

Johannes Dahlstrom wrote:
> 
> hughes, b. wrote:
> 
> > A prism for a dodecahedron?
> 
> I think he meant a (extruded) regular 12-sided polygon. Don't know if it
> has an "official" name, but his guess, "dodecagon", sounds logical to me...


Post a reply to this message

From: LibraryMan
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 12:46:31
Message: <3DCFEC0E.9C09C925@att.net>
The number of sides to the extruded shape is not as much the matter as
is the question of how to rotate vectors of a given distance from the
origin (in XZ plane) around the y-axis.  Looks like this 'vrotate' is
worth a look.  Let me go study some...  Unless of course one of you
decides to GIVE me the answer... ;-)

--LibraryMan

Christoph Hormann wrote:
> 
> LibraryMan wrote:
> >
> > Hi,
> > I'm trying to do a prism with a dodecagon (? -- anyway, polygon with 12
> > equal sides ) face and instead of trying to figure out the exact vectors
> > of the points, I wanted to do something like specifying every 4th
> > vector, then rotating the in-betweens around the y-axis, like this:
> >
> > #declare v_01 =  <0.5, 0> ;
> > #declare v_02 =  <0.5, 0> rotate y*30 ;
> > [...]
> 
> Bob's suggestion is surely the best for your purpose but
> rotating/transforming vectors can be done with
> 'vrotate()'/'vtransform()'.    See the documentation for details.
> 
> Christoph
> 
> --
> POV-Ray tutorials, include files, Sim-POV,
> HCR-Edit and more: http://www.tu-bs.de/~y0013390/
> Last updated 02 Nov. 2002 _____./\/^>_*_<^\/\.______


Post a reply to this message

From: hughes, b 
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 14:43:02
Message: <3dd00846@news.povray.org>
"LibraryMan" <mrm### [at] attnet> wrote in message
news:3DCFEC0E.9C09C925@att.net...
> The number of sides to the extruded shape is not as much the matter as
> is the question of how to rotate vectors of a given distance from the
> origin (in XZ plane) around the y-axis.  Looks like this 'vrotate' is
> worth a look.  Let me go study some...  Unless of course one of you
> decides to GIVE me the answer... ;-)

I don't think anything written up for POV so far does something with the uv
kind of vectors such as prism uses. Checking out vrotate for that here got
me nowhere even though I tried to use the dot operator in an attempt to
limit the usual 3 float vectors to two floats but POV will not allow it into
the prism.

I had a feeling you knew a prism wasn't going to do a dodecahedron but I
didn't catch on about the dodecagon name and jumped ahead that you were
confused about the prism. My fault, sorry.

If anyone tells of a way to work with the uv vector, as described above, I'm
all ears too.


Post a reply to this message

From: LibraryMan
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 16:37:19
Message: <3DD0220B.1B5F76C3@att.net>
BTW, what are uv vectors (RANK newbie here!)

Wow, it's hard to believe something simple enough for _ME_ to come up
with it isn't actually possible 
to do!!  I mean, in principle it ought to work, right?  POV's SDL can do
so many other things (that I sure DON'T understand! ;-)  )

I was allowed to declare the following vectors, no problem, :
#declare v_01 =  <0.5, 0, 0>;
#declare v_02 =  vrotate(<0.5, 0, 0>,y*30);
#declare v_03 =  vrotate(<0.5, 0, 0>,y*60);
#declare v_04 =  <0, 0, -0.5>;
#declare v_05 =  vrotate(<0, 0, -0.5>,y*30);
#declare v_06 =  vrotate (<0, 0, -0.5>,y*60);
#declare v_07 =  <-0.5, 0, 0>;
#declare v_08 =  vrotate(<-0.5, 0, 0>,y*30);
#declare v_09 =  vrotate(<-0.5, 0, 0>,y*60);
#declare v_10 =  <0, 0, 0.5>;
#declare v_11 =  vrotate(<0, 0, 0.5>,y*30);
#declare v_12 =  vrotate(<0, 0, 0.5>,y*60);

But when it came to actually using them in the prism, like so:

prism {
linear_sweep
linear_spline
0,
1,
13,
v_01, v_02, v_03, v_04, v_05, v_06, v_07, v_08, v_09, v_10, v_11, v_12,
v_01
pigment { Green }
}

POV choked on it!  AARRGGGH!  It's SO simple!  Why isn't it possible?!
--Mark


"hughes, b." wrote:
>
> I don't think anything written up for POV so far does something with the uv
> kind of vectors such as prism uses. Checking out vrotate for that here got
> me nowhere even though I tried to use the dot operator in an attempt to
> limit the usual 3 float vectors to two floats but POV will not allow it into
> the prism.
> 
> I had a feeling you knew a prism wasn't going to do a dodecahedron but I
> didn't catch on about the dodecagon name and jumped ahead that you were
> confused about the prism. My fault, sorry.
> 
> If anyone tells of a way to work with the uv vector, as described above, I'm
> all ears too.


Post a reply to this message

From: LibraryMan
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 17:02:34
Message: <3DD027F1.3310AA64@att.net>
I quote from section 4.1.4 of the manual for POV v3.1g:  
"A vector is a set of related float values. Vectors may be specified
using literals, identifiers or functions which return vector values. You
may also create very complex vector
expressions from combinations of any of these using various familiar
operators."

I _SHOULD_ be able to use the identifiers as vectors in the prism
statement, shouldn't I?  If not, the above is a LIE!

Anyone?  (Bueller?...)
--Mark

"hughes, b." wrote:
> 
> "LibraryMan" <mrm### [at] attnet> wrote in message
> news:3DCFEC0E.9C09C925@att.net...
> > The number of sides to the extruded shape is not as much the matter as
> > is the question of how to rotate vectors of a given distance from the
> > origin (in XZ plane) around the y-axis.  Looks like this 'vrotate' is
> > worth a look.  Let me go study some...  Unless of course one of you
> > decides to GIVE me the answer... ;-)
> 
> I don't think anything written up for POV so far does something with the uv
> kind of vectors such as prism uses. Checking out vrotate for that here got
> me nowhere even though I tried to use the dot operator in an attempt to
> limit the usual 3 float vectors to two floats but POV will not allow it into
> the prism.
> 
> I had a feeling you knew a prism wasn't going to do a dodecahedron but I
> didn't catch on about the dodecagon name and jumped ahead that you were
> confused about the prism. My fault, sorry.
> 
> If anyone tells of a way to work with the uv vector, as described above, I'm
> all ears too.


Post a reply to this message

From: LibraryMan
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 17:07:16
Message: <3DD02908.9709E1E6@att.net>
LibraryMan wrote:
> 
> I quote from section 4.1.4 of the manual for POV v3.1g:

This corresponds to section 6.1.4 of the POV 3.5 help (for Win).


Post a reply to this message

From: Christopher James Huff
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 18:54:17
Message: <chrishuff-AB4C9B.18534211112002@netplex.aussie.org>
In article <3DD0220B.1B5F76C3@att.net>, LibraryMan <mrm### [at] attnet> 
wrote:

> POV choked on it!  AARRGGGH!  It's SO simple!  Why isn't it possible?!

It is possible, POV just choked because you gave it bad information. It 
is expecting a 2D vector in this case, you gave it a 3D vector. I'm not 
really sure what it would do in this case, either chop off the third 
component or give an error. Either way, it would not work...the third 
component is one you need. If you replace each "v_XX" with "< v_XX.x, 
v_XX.z>" it should work fine. If POV truncates 3D vectors to 2D ones, 
you just need to use coordinates in the xy plane and rotate around the z 
axis. I know that seems counterintuitive when the prism is in the xz 
plane.

Here are a couple macros that might be useful:

This macro truncates a vector to 2D, only useful if POV doesn't do it 
automatically:
#macro V2D(V) (<V.x, V.y>) #end
You would need to rearrange your vectors to be in the xy plane to use 
this macro. Or use this version:
#macro V_XZ(V) (<V.x, V.z>) #end

Another one, takes a 2D vector and angle to rotate it around the z axis:
#macro VRotate2D(V, A)
    #local Tmp = vrotate(V, z*A);
    (< Tmp.x, Tmp.y>)
#end

And if you are trying to get a perfect dodecagon, you are doing it the 
hard way...you could just use a loop:

#macro RegularPrism(Sides
    prism {linear_sweep linear_spline
        #local J = 0;
        #while(J < Sides)
            VRotate2D(<1, 0>, 360*J/12)
            #declare J = J + 1;
        #end
    }
#end

object {RegularPrism(12)
    pigment {color Green}
}

-- 
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: chr### [at] tagpovrayorg
http://tag.povray.org/


Post a reply to this message

From: hughes, b 
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 20:29:41
Message: <3dd05985@news.povray.org>
I did get it accepting the 2D vectors, as Chris had shown by forcing them
within the prism. I kept getting a 3D (or 4D or 5D?) when predeclaring even
with dot operators.

No dodecahedron (yet), so I leave that up to you to try and figure out.
Especially since I'm not sure what I'm doing with it. Chris's loop idea
sounds simpler but I couldn't get it to make one by rotating just the x
value, not with the loop he suggested though.

#declare v_01 =  <0.5, 0>;
#declare v_02 =  vrotate(<0.5, 0>,30*y);
#declare v_03 =  vrotate(<0.5, 0>,60*y);
#declare v_04 =  <0, -0.5>;
#declare v_05 =  vrotate(<0, -0.5>,30*y);
#declare v_06 =  vrotate(<0, -0.5>,60*y);
#declare v_07 =  <-0.5, 0>;
#declare v_08 =  vrotate(<-0.5, 0>,30*y);
#declare v_09 =  vrotate(<-0.5, 0>,60*y);
#declare v_10 =  <0, 0.5>;
#declare v_11 =  vrotate(<0, 0.5>,30*y);
#declare v_12 =  vrotate(<0, 0.5>,60*y);

prism {
linear_sweep
linear_spline
0, // sweep the following shape from here ...
1, // ... up through here
13, // the number of points making up the shape ...
<v_01.x,v_01.y>, <v_02.x,v_02.y>, <v_03.x,v_03.y>, <v_04.x,v_04.y>,
<v_05.x,v_05.y>, <v_06.x,v_06.y>, <v_07.x,v_07.y>,
 <v_08.x,v_08.y>, <v_09.x,v_09.y>, <v_10.x,v_10.y>, <v_11.x,v_11.y>,
<v_12.x,v_12.y>, <v_01.x,v_01.y>
pigment { color rgb <0,1,0> }
 rotate -90*x // face camera
}

camera {
 location -4*z
 look_at 0
}

light_source {
 <10,10,-10>,<1,0.5,1>
}
light_source {
 <-10,-10,-10>,<0.5,1,0.5>
}


Post a reply to this message

From: Christopher James Huff
Subject: Re: Newbie syntax problem
Date: 11 Nov 2002 22:38:24
Message: <chrishuff-1485BA.22374811112002@netplex.aussie.org>
In article <3dd05985@news.povray.org>,
 "hughes, b." <omn### [at] charternet> wrote:

> No dodecahedron (yet), so I leave that up to you to try and figure out.

There's one in the include files.


> Especially since I'm not sure what I'm doing with it. Chris's loop idea
> sounds simpler but I couldn't get it to make one by rotating just the x
> value, not with the loop he suggested though.

The main problem was not with the loop, but with the prism statement, I 
didn't give a complete one. My excuse? I've never used the object 
before... ;-)
There was also a typo that would have made it work only with 12 sides, 
but that doesn't seem to be what you ran into.
I'm not sure what you mean by "rotating just the x value", unless you 
mean x as in < 1, 0, 0>.
This seems to work fine, with shorter code, and supporting any number of 
sides.

global_settings {assumed_gamma 1}

#declare CamPos = <-3, 2.5,-8>;
camera {
    location CamPos
    look_at < 0, 0, 0>
    angle 45
}

light_source {<-50,-50,-50>, color rgb 1}
light_source {CamPos, color rgb 0.05}

#macro VRotate2D(V, A)
    #local Tmp = vrotate(V, z*A);
    (< Tmp.x, Tmp.y>)
#end

#macro RegularPrism(Height1, Height2, Sides)
    prism {linear_sweep linear_spline
        Height1, Height2, Sides
        #local J = 0;
        #while(J < Sides)
            VRotate2D(x, 360*J/Sides)
            #local J = J + 1;
        #end
    }
#end

object {RegularPrism(0, 1, 12)
    pigment {color rgb 1}
    finish {ambient 0}
    rotate -x*45
}

-- 
Christopher James Huff <cja### [at] earthlinknet>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: chr### [at] tagpovrayorg
http://tag.povray.org/


Post a reply to this message

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

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