|
|
|
|
|
|
| |
| |
|
|
From: Greg M Johnson
Subject: A macro that drops a vector-- what's the syntax again?
Date: 9 Nov 2005 21:58:46
Message: <4372b765@news.povray.org>
|
|
|
| |
| |
|
|
I cannot get the following code to work:
//-----------------------------
#macro sign(a)
#if (a<0)
(-a)
#else
(a)
#end
#end
#macro ease_in(your_clock,your_array)
#local rotdim=dimension_size(your_array,1);
#local ennn=0;
#while(ennn<rotdim)
#if(your_array[ennn].x=your_clock)
(<your_array[ennn].y,your_array[ennn].z,your_array[ennn].t>)
#declare ennn=ennn+1e7;
#else
#if(your_array[ennn].x<your_clock)
#local ennn=ennn+1;
#else
#local why1=your_array[ennn+0];
#local why0=your_array[ennn-1];
#local
teee=(your_clock-why0.x)/(why1.x-why0.x);
#local
teeecubes=0.5-0.5*pow(abs(cos(teee*pi)),0.5)*sign(cos(teee*pi));
#local
exxx=why0.y+(why1.y-why0.y)*teeecubes;
#local
eyyy=why0.z+(why1.z-why0.z)*teeecubes;
#local
ezzz=why0.t+(why1.t-why0.t)*teeecubes;
#declare ennn=ennn+1e7;
(<exxx,eyyy,ezzz>)
#end
#end
#end
#end
#declare ary=array[3]{
//an array of four dimensions:
//< time, x_position[n], y_position[n], z_position[n]>
<0.00, -16,47,24>,
<0.50, 0,52,-0>,
<1.00, -16,47,24>
}
//sorry for the mess here!
#declare ltempwristpt=<0,0,0>+(ease_in(clock,ary));
sphere{ltempwristpt,1 pigment{red 1}}
Post a reply to this message
|
|
| |
| |
|
|
From: Slime
Subject: Re: A macro that drops a vector-- what's the syntax again?
Date: 10 Nov 2005 00:36:05
Message: <4372dc45@news.povray.org>
|
|
|
| |
| |
|
|
> #macro sign(a)
> #if (a<0)
> (-a)
> #else
> (a)
> #end
> #end
#macro sign(a)
#if (a < 0)
#local Ans = -a;
#else
#local Ans = a;
#end
(Ans)
#end
A similar solution for your other macro.
(Though isn't there a sign function or something like that already?)
- Slime
[ http://www.slimeland.com/ ]
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
In article <4372b765@news.povray.org>,
"Greg M. Johnson" <p t e r a n d o n @
thecommononethatstartswithY.com> wrote:
::I cannot get the following code to work:
::
:://-----------------------------
::#macro sign(a)
::#if (a<0)
:: (-a)
::#else
:: (a)
::#end
::#end
... abs() already exist in pov
Post a reply to this message
|
|
| |
| |
|
|
From: Zeger Knaepen
Subject: Re: A macro that drops a vector-- what's the syntax again?
Date: 10 Nov 2005 05:56:22
Message: <43732756$1@news.povray.org>
|
|
|
| |
| |
|
|
"kurtz le pirate" <kur### [at] yahoofr> wrote in message
news:kurtzlepirate-B61563.07015210112005@news.povray.org...
> In article <4372b765@news.povray.org>,
> "Greg M. Johnson" <p t e r a n d o n @
> thecommononethatstartswithY.com> wrote:
>
> ::I cannot get the following code to work:
> ::
> :://-----------------------------
> ::#macro sign(a)
> ::#if (a<0)
> :: (-a)
> ::#else
> :: (a)
> ::#end
> ::#end
>
> ... abs() already exist in pov
what's abs() got to do with sign(), except that you can make sign() with
sign(x)=x/abs(x) ?
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
|
|
| |
| |
|
|
From: Warp
Subject: Re: A macro that drops a vector-- what's the syntax again?
Date: 10 Nov 2005 11:57:46
Message: <43737c09@news.povray.org>
|
|
|
| |
| |
|
|
Zeger Knaepen <zeg### [at] povplacecom> wrote:
> what's abs() got to do with sign(), except that you can make sign() with
sign(x)=x/abs(x) ?
Look at his "sign" implementation. It's abs().
--
- Warp
Post a reply to this message
|
|
| |
| |
|
|
From: John VanSickle
Subject: Re: A macro that drops a vector-- what's the syntax again?
Date: 10 Nov 2005 19:14:32
Message: <4373e268@news.povray.org>
|
|
|
| |
| |
|
|
Zeger Knaepen wrote:
> "kurtz le pirate" <kur### [at] yahoofr> wrote in message
news:kurtzlepirate-B61563.07015210112005@news.povray.org...
>
>>In article <4372b765@news.povray.org>,
>> "Greg M. Johnson" <p t e r a n d o n @
>> thecommononethatstartswithY.com> wrote:
>>
>>::I cannot get the following code to work:
>>::
>>:://-----------------------------
>>::#macro sign(a)
>>::#if (a<0)
>>:: (-a)
>>::#else
>>:: (a)
>>::#end
>>::#end
>>
>>... abs() already exist in pov
>
>
> what's abs() got to do with sign(), except that you can make sign() with
sign(x)=x/abs(x) ?
With a divide-by-zero error when x==0.
Regards,
John
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Greg M. Johnson wrote:
> I cannot get the following code to work:
>
> //-----------------------------
> #macro sign(a)
> #if (a<0)
> (-a)
> #else
> (a)
> #end
> #end
I've noticed that this way of using macros to express things leads to
parse errors. There is a work-around (which has already been posted),
but the docs give no reason for this construction to fail. Is this
behavior deemed worthy of correction?
Regards,
John
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
John VanSickle wrote:
> Greg M. Johnson wrote:
>
>> I cannot get the following code to work:
>>
>> //-----------------------------
>> #macro sign(a)
>> #if (a<0)
>> (-a)
>> #else
>> (a)
>> #end
>> #end
>
> I've noticed that this way of using macros to express things leads to
> parse errors. There is a work-around (which has already been posted),
> but the docs give no reason for this construction to fail.
Well, they do, but I agree it could be a lot clearer. In "Are POV-Ray
Macros a Function or a Macro?" it explains it:
"When the body of a macro consists of statements that create an entire item
such as an object, texture, etc. then the macro acts like a function which
returns a single value."
The "statements that create an entire item" is the important part here. What
the macro above is are *two* statements that create *two* items. Basically,
the word "item" means what is best explained as "evereything you could also
assign to a single #declared variable".
> Is this behavior deemed worthy of correction?
It is correct, and it is also possible to obey the "one statement" rule! :-)
It just requires slightly different syntax:
#macro sign(a)
(
#if (a<0)
-a
#else
a
#end
);
#end
is perfectly legal!
Thorsten
Post a reply to this message
|
|
| |
| |
|
|
From: Greg M Johnson
Subject: Re: A macro that drops a vector-- what's the syntax again?
Date: 11 Nov 2005 21:40:16
Message: <43755610@news.povray.org>
|
|
|
| |
| |
|
|
Greg M. Johnson wrote:
Oi vey! Too much late-night coding, I guess. :-S
Yes, that's an abs() function. I wanted a sign() function and so was
writing my own.
Perhaps it was late-night delusions, but I did think that povray 3.5 (the
apt-get version) was freaking with me when it came to nested function/macro
calls.
> I cannot get the following code to work:
>
> //-----------------------------
> #macro sign(a)
> #if (a<0)
> (-a)
> #else
> (a)
> #end
> #end
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
John VanSickle <evi### [at] hotmailcom> wrote:
> I've noticed that this way of using macros to express things leads to
> parse errors. There is a work-around (which has already been posted),
> but the docs give no reason for this construction to fail. Is this
> behavior deemed worthy of correction?
The documentation could be clearer. It's difficult to explain clearly,
though. Any suggestions?
The behaviour itself is logical, but not easy to explain.
--
- Warp
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |