POV-Ray : Newsgroups : povray.newusers : Question with a macro Server Time
29 Jul 2024 12:26:01 EDT (-0400)
  Question with a macro (Message 1 to 3 of 3)  
From: Oleguer Vilella
Subject: Question with a macro
Date: 27 Sep 2005 14:23:19
Message: <43398e17@news.povray.org>
Hi,

I've this blob:
======================================
#declare Lipid =
blob {
     threshold 0.5
sphere {
       <0, 5/2, 0>, 2/1.2, 1
       texture { RedTexture }
     }
     sphere {
       <0, -5/2, 0>, 2/1.2, 1
       texture { RedTexture }
     }
     cylinder {
       <0.8, 5/2, 0>, <0.8, -5/2, 0>, 0.5/1.2, 1
       texture { WhiteTexture }
     }
     cylinder {
       <-0.8, 5/2, 0>, <-0.8, -5/2, 0>, 0.5/1.2, 1
       texture { WhiteTexture }
     }
translate <0, 0, 0>
}
======================================
And I've done a macro to place copies from this object and to put them like 
a bridge. Now I want to put them like a sphere, I want to follow the length 
of a sphere with a radius x.
Is it a way to contain them in a sphere and follow the external contour?

Thanks in advance,
Oleguer


Post a reply to this message

From: Chris B
Subject: Re: Question with a macro
Date: 27 Sep 2005 17:26:38
Message: <4339b90e$1@news.povray.org>
"Oleguer Vilella" <ole### [at] infonegociocom> wrote in message 
news:43398e17@news.povray.org...
> Hi,
>
> I've this blob:
> ======================================
> #declare Lipid =
> blob {
>     threshold 0.5
> sphere {
>       <0, 5/2, 0>, 2/1.2, 1
>       texture { RedTexture }
>     }
>     sphere {
>       <0, -5/2, 0>, 2/1.2, 1
>       texture { RedTexture }
>     }
>     cylinder {
>       <0.8, 5/2, 0>, <0.8, -5/2, 0>, 0.5/1.2, 1
>       texture { WhiteTexture }
>     }
>     cylinder {
>       <-0.8, 5/2, 0>, <-0.8, -5/2, 0>, 0.5/1.2, 1
>       texture { WhiteTexture }
>     }
> translate <0, 0, 0>
> }
> ======================================
> And I've done a macro to place copies from this object and to put them 
> like a bridge. Now I want to put them like a sphere, I want to follow the 
> length of a sphere with a radius x.
> Is it a way to contain them in a sphere and follow the external contour?
>
> Thanks in advance,
> Oleguer
>

Hi Oleguer,

I'm not quite clear from your note on the sort of distribution you're trying 
for.

The following SDL produces an arc of 'Lipids' and rotates it 360 degrees to 
give a spherical surface with a separation of 20 degrees:

#declare Angle=20;
#declare Distance=30;
#local I=0;
#while (I<360)
  #local J=0;
  #while (J<180)
    object {Lipid translate z*Distance rotate <J,0,I> pigment {color 1}}
    #local J=J+Angle;
  #end
  #local I=I+Angle;
#end

If you want a more random distribution, then you can use something like the 
following:

#declare Distance=30;
#local I=0;
#local Seed = seed(1);
#while (I<30)
  object {Lipid
    rotate <rand(Seed)*360,rand(Seed)*360,rand(Seed)*360>   // Randomly 
Orient
//    translate z*Distance*sqrt(rand(Seed)) 
// Randomly Fill
    translate z*Distance 
// Distribute on Surface
    rotate <asind(sqrt(rand(Seed))),0,rand(Seed)*360>               // 
Randomly Distribute
    #if (rand(Seed)>0.5) scale <1,1,-1> #end
    pigment {color 1}
  }
  #local I=I+1;
#end
sphere {0,Distance pigment {color rgbt 0.95}}

The alternative 'translate', that's commented out, fills the sphere with 
your shape rather than just placing a copy on the surface.

If you want a random but uniform distribution then it gets a bit complicated 
and there have been quite a few threads discussing various alternative 
techniques for doing that.

Hope that helps.

Regards,
Chris B.


Post a reply to this message

From: Oleguer Vilella
Subject: Re: Question with a macro
Date: 28 Sep 2005 15:43:14
Message: <433af252@news.povray.org>
Hi Chris,

Yeah, I've done, more or less, your first code.
I'm going to have a look at your second code, it looks interesting.

I will post the doubts later.

Thank you very much.

Regards,
Oleguer



news:4339b90e$1@news.povray.org...
>
> "Oleguer Vilella" <ole### [at] infonegociocom> wrote in message 
> news:43398e17@news.povray.org...
>> Hi,
>>
>> I've this blob:
>> ======================================
>> #declare Lipid =
>> blob {
>>     threshold 0.5
>> sphere {
>>       <0, 5/2, 0>, 2/1.2, 1
>>       texture { RedTexture }
>>     }
>>     sphere {
>>       <0, -5/2, 0>, 2/1.2, 1
>>       texture { RedTexture }
>>     }
>>     cylinder {
>>       <0.8, 5/2, 0>, <0.8, -5/2, 0>, 0.5/1.2, 1
>>       texture { WhiteTexture }
>>     }
>>     cylinder {
>>       <-0.8, 5/2, 0>, <-0.8, -5/2, 0>, 0.5/1.2, 1
>>       texture { WhiteTexture }
>>     }
>> translate <0, 0, 0>
>> }
>> ======================================
>> And I've done a macro to place copies from this object and to put them 
>> like a bridge. Now I want to put them like a sphere, I want to follow the 
>> length of a sphere with a radius x.
>> Is it a way to contain them in a sphere and follow the external contour?
>>
>> Thanks in advance,
>> Oleguer
>>
>
> Hi Oleguer,
>
> I'm not quite clear from your note on the sort of distribution you're 
> trying for.
>
> The following SDL produces an arc of 'Lipids' and rotates it 360 degrees 
> to give a spherical surface with a separation of 20 degrees:
>
> #declare Angle=20;
> #declare Distance=30;
> #local I=0;
> #while (I<360)
>  #local J=0;
>  #while (J<180)
>    object {Lipid translate z*Distance rotate <J,0,I> pigment {color 1}}
>    #local J=J+Angle;
>  #end
>  #local I=I+Angle;
> #end
>
> If you want a more random distribution, then you can use something like 
> the following:
>
> #declare Distance=30;
> #local I=0;
> #local Seed = seed(1);
> #while (I<30)
>  object {Lipid
>    rotate <rand(Seed)*360,rand(Seed)*360,rand(Seed)*360>   // Randomly 
> Orient
> //    translate z*Distance*sqrt(rand(Seed)) // Randomly Fill
>    translate z*Distance // Distribute on Surface
>    rotate <asind(sqrt(rand(Seed))),0,rand(Seed)*360>               // 
> Randomly Distribute
>    #if (rand(Seed)>0.5) scale <1,1,-1> #end
>    pigment {color 1}
>  }
>  #local I=I+1;
> #end
> sphere {0,Distance pigment {color rgbt 0.95}}
>
> The alternative 'translate', that's commented out, fills the sphere with 
> your shape rather than just placing a copy on the surface.
>
> If you want a random but uniform distribution then it gets a bit 
> complicated and there have been quite a few threads discussing various 
> alternative techniques for doing that.
>
> Hope that helps.
>
> Regards,
> Chris B.
>
>
>
>
>
>
>


Post a reply to this message

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