![](/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) |
Has anyone been following the developments of supershapes that
appeared in a brief article in Nature as little while ago? Well
3D versions can be made and there are some examples here
http://astronomy.swin.edu.au/~pbourke/surfaces/supershape3d/
along with a PovRay macro.
Oh yeah, some people call it a "super formula".
ps: I've never written a macro before so if there are any
conventions I should have used then please let me know.
--
Paul Bourke
pdb_NOSPAMswin.edu.au
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) |
in news:pdb### [at] netplex aussie org Paul Bourke
wrote:
> http://astronomy.swin.edu.au/~pbourke/surfaces/supershape3d/
>
Paul,
on that page you write "One is to use the builtin parametric primitive,
doing it this way would result in ...". Do you have a scene using the
parametric primitive available? I'd like try it with my param.inc macro (
http://members.home.nl/seedseven/ ) as it uses a syntax very close to the
parametric primitive, but to be honest I'm too lazy to figure it out for
myself.
Ingo
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) |
Paul Bourke wrote:
>
> Has anyone been following the developments of supershapes that
> appeared in a brief article in Nature as little while ago? Well
> 3D versions can be made and there are some examples here
> http://astronomy.swin.edu.au/~pbourke/surfaces/supershape3d/
> along with a PovRay macro.
Interesting, do you know if these shapes can be converted in an implicit
form, at least in some special cases?
This would make it easier to render them in POV-Ray without generating a
mesh.
>
> ps: I've never written a macro before so if there are any
> conventions I should have used then please let me know.
I don't think so. When having many parameters it might be useful to group
them into vectors, this would be easier to memorize for the user. If you
have vector parameters it is a good idea to alternatively allow floats by
using:
#macro Test (Parameter, ...)
#local Param_Intern=Parameter+<0,0,0>;
...
Christoph
--
POV-Ray tutorials, include files, Sim-POV,
HCR-Edit and more: http://www.tu-bs.de/~y0013390/
Last updated 17 Jun. 2003 _____./\/^>_*_<^\/\.______
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) |
ingo <ing### [at] tag povray org> wrote in
news:Xns### [at] povray org:
> in news:pdb### [at] netplex aussie org Paul
> Bourke wrote:
>
>> http://astronomy.swin.edu.au/~pbourke/surfaces/supershape3d/
>>
>
> Paul,
>
> on that page you write "One is to use the builtin parametric
> primitive, doing it this way would result in ...". Do you have a scene
> using the parametric primitive available? I'd like try it with my
> param.inc macro ( http://members.home.nl/seedseven/ ) as it uses a
> syntax very close to the parametric primitive, but to be honest I'm
> too lazy to figure it out for myself.
Hi Ingo
Below is a "super shape" scene that uses your Parametric() macro.
Tor Olav
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#version 3.5;
#include "param.inc"
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#macro SuperFunction(M, A, B, N1, N2, N3)
#local Nil = 1E-12;
#local MM = M/4;
#local NN = -1/N1;
function(T) {
pow(
Nil +
pow(abs(cos(T*MM)/A), N2) +
pow(abs(sin(T*MM)/B), N3),
NN
)
}
#end // macro SuperFunction
#macro SuperShapeMesh(
M1, A1, B1, N11, N12, N13,
M2, A2, B2, N21, N22, N23,
ResTh, ResPh)
#local SuperFn1 = SuperFunction(M1, A1, B1, N11, N12, N13)
#local SuperFn2 = SuperFunction(M2, A2, B2, N21, N22, N23)
Parametric(
function(Th, Ph) { cos(Th)*SuperFn1(Th)*cos(Ph)*SuperFn2(Ph) },
function(Th, Ph) { sin(Ph)*SuperFn2(Ph) },
function(Th, Ph) { sin(Th)*SuperFn1(Th)*cos(Ph)*SuperFn2(Ph) },
<-pi, -pi/2>, <pi, pi/2>,
ResTh, ResPh, ""
)
#end // macro SuperShapeMesh
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
object {
SuperShapeMesh(
1, 1, 1 77, 0.81, 71.7,
8, 1, 1, 0.63, 2.92, 0.24,
100, 50
)
pigment { color rgb <1, 1, 1> }
double_illuminate // Because of bug
no_shadow
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
camera {
location <3, 2, 4>*0.6
look_at <0, 0, 0>
}
light_source { 100*x color rgb <1.0, 0.5, 0.5> }
light_source { 100*y color rgb <0.5, 1.0, 0.5> }
light_source { 100*z color rgb <0.5, 0.5, 1.0> }
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
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) |
Christoph Hormann wrote:
>> Has anyone been following the developments of supershapes that
>> appeared in a brief article in Nature as little while ago? Well
>> 3D versions can be made and there are some examples here
>> http://astronomy.swin.edu.au/~pbourke/surfaces/supershape3d/
>> along with a PovRay macro.
>
> Interesting, do you know if these shapes can be converted in an implicit
> form, at least in some special cases?
>
> This would make it easier to render them in POV-Ray without generating a
> mesh.
>
What about adding the supershape as a built-in POVRay function for
isosurface? (like f_sphere, etc.)
That would at least eliminate function evaluation time.
Wolfgang
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) |
in news:Xns### [at] 204 213 191 226 Tor Olav
Kristensen wrote:
> Below is a "super shape" scene that uses your Parametric() macro.
>
Thank you Tor Olav
Ingo
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) |
Hi Paul. I was trying to recreate some of the Super Shapes at your site and
punched in the numbers shown for the SS1 and SS2 parameters. Alas, I did not
get anything like the images at your site. Can you tell me if I can use the
supershape.pov macro to generate the same images you show? Perhaps that is
not the right appraoch. Great work, in any event!
Best wishes,
Dennis
"Paul Bourke" <pdb### [at] swin edu au> wrote in message
news:pdb### [at] netplex aussie org...
> Has anyone been following the developments of supershapes that
> appeared in a brief article in Nature as little while ago? Well
> 3D versions can be made and there are some examples here
> http://astronomy.swin.edu.au/~pbourke/surfaces/supershape3d/
> along with a PovRay macro.
>
> Oh yeah, some people call it a "super formula".
>
> ps: I've never written a macro before so if there are any
> conventions I should have used then please let me know.
> --
> Paul Bourke
> pdb_NOSPAMswin.edu.au
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) |
"Dennis Miller" <dhm### [at] comcast net> wrote in
news:3f12191d@news.povray.org:
> Hi Paul. I was trying to recreate some of the Super Shapes at your
> site and punched in the numbers shown for the SS1 and SS2 parameters.
> Alas, I did not get anything like the images at your site. Can you
> tell me if I can use the supershape.pov macro to generate the same
> images you show? Perhaps that is not the right appraoch.
...
Try with all the A's and B's set to 1
(SS1a = SS1b = SS2a = SS2b = 1)
E.g.:
For the first example on his web page, call the macro like this:
SuperShape(
2, 1, 1, 0.7, 0.3, 0.2,
3, 1, 1, 100, 100, 100,
200
)
Tor Olav
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) |
Wasn't it ingo who wrote:
>in news:pdb### [at] netplex aussie org Paul Bourke
>wrote:
>
>> http://astronomy.swin.edu.au/~pbourke/surfaces/supershape3d/
>>
>
>Paul,
>
>on that page you write "One is to use the builtin parametric primitive,
>doing it this way would result in ...". Do you have a scene using the
>parametric primitive available? I'd like try it with my param.inc macro (
>http://members.home.nl/seedseven/ ) as it uses a syntax very close to the
>parametric primitive, but to be honest I'm too lazy to figure it out for
>myself.
I think it goes something like this:
// Choose one of the three examples from supershape.pov
#declare Example=1;
// Suitable camera positions for each example shape
#switch (Example)
#case (1)
camera { location <2,1,-2> look_at <0, 0, 0>}
#break
#case (2)
camera { location <2,1,-10> look_at <0, 0, 0>}
#break
#case (3)
camera { location <-0.5,0.5,-2> look_at <0, 0, 0>}
#break
#end
light_source {<100,200,-100> colour rgb 1}
light_source {<-100,-200,-100> colour rgb 0.5}
// ----------------------------------------
#include "param.inc"
#macro SuperShape(SS1m,SS1a,SS1b,SS1n1,SS1n2,SS1n3,SS2m,SS2a,SS2b,SS2n1,
SS2n2,SS2n3,resol)
#declare SS1 = function(T) { 1/
pow( pow(abs(cos(SS1m*T/4))/SS1a,SS1n2)
+ pow(abs(sin(SS1m*T/4))/SS1b,SS1n3), 1/SS1n1)
}
#declare SS2 = function(T) { 1/
pow( pow(abs(cos(SS2m*T/4))/SS2a,SS2n2)
+ pow(abs(sin(SS2m*T/4))/SS2b,SS2n3), 1/SS2n1)
}
#declare Fx=function(u,v) { SS1(u) *cos(u) *SS2(v) *cos(v) }
#declare Fy=function(u,v) { SS1(u) *sin(u) *SS2(v) *cos(v) }
#declare Fz=function(u,v) { SS2(v) *sin(v) }
Parametric(Fx,Fy,Fz,<-pi/2,-pi>,<pi/2,pi>,resol,resol,"")
#end
// ----------------------------------------
// Run It
object {
#switch (Example)
#case (1)
SuperShape(1,1,1 77,0.81,71.7, 8,1,1,0.63,2.92,0.24, 100)
#break
#case (2)
SuperShape(9,1,1,92,0.3,-45, 4,1,1,-0.8,88,-0.35, 39)
#break
#case(3)
SuperShape(4,1,1,1,1,1, 0,1,1,1,1,1, 50)
#break
#end
pigment {rgb 0.9}
finish {phong 0.5 phong_size 10}
}
--
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) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Thanks very much Tor.
D.
"Tor Olav Kristensen" <tor_olav_kCURLYAhotmail.com> wrote in message
news:Xns### [at] 204 213 191 226...
> "Dennis Miller" <dhm### [at] comcast net> wrote in
> news:3f12191d@news.povray.org:
>
> > Hi Paul. I was trying to recreate some of the Super Shapes at your
> > site and punched in the numbers shown for the SS1 and SS2 parameters.
> > Alas, I did not get anything like the images at your site. Can you
> > tell me if I can use the supershape.pov macro to generate the same
> > images you show? Perhaps that is not the right appraoch.
> ...
>
> Try with all the A's and B's set to 1
>
> (SS1a = SS1b = SS2a = SS2b = 1)
>
>
> E.g.:
> For the first example on his web page, call the macro like this:
>
> SuperShape(
> 2, 1, 1, 0.7, 0.3, 0.2,
> 3, 1, 1, 100, 100, 100,
> 200
> )
>
>
> Tor Olav
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) |