|
|
As an example, take the simple case where I have two values A and B, and I
need their sum and their product. Is there a way to do this with one macro?
(my actual problem is a lot more complex,(rotation in four dimensions) but
the principle is the same..)
#macro sum_product(A,B)
#local sum=A+B
#local product=A*B
.......?
#end
// now how do I read sum and product?
Is this at all possible?
Post a reply to this message
|
|
|
|
> As an example, take the simple case where I have two values A and B, and I
> need their sum and their product. Is there a way to do this with one
> macro?
You can return values by parameter, but shouldn't because it's bugged...
IE #macro Foo(A, B, result1, result2) is bad, but might be fixed someday.
So that leaves passing values by substitution, which perty much limits you
to returning one variable. However, there are types of variables that have
more than one value, most notably vectors. You can fit up to 4 floats in a
vector and later access them with the .x,.y,.z, and .t operators. Or you can
return an array that holds the results.
#macro sum_product(A,B)
#local mysum = A+B;
#local myproduct = A*B;
#local result = array[2]{mysum,myproduct};
result
#end
#declare sum_product_result = sum_product(2, 3);
#declare sum_result = sum_product_result[0];
#declare product_result = sum_product_result[1];
Post a reply to this message
|
|
|
|
"Jos leys" <jos### [at] pandorabe> wrote in message
news:web.44fb4a6b3c2bacd6f4015f620@news.povray.org...
> As an example, take the simple case where I have two values A and B, and I
> need their sum and their product. Is there a way to do this with one
> macro?
> (my actual problem is a lot more complex,(rotation in four dimensions) but
> the principle is the same..)
>
> #macro sum_product(A,B)
> #local sum=A+B
> #local product=A*B
> .......?
> #end
>
> // now how do I read sum and product?
> Is this at all possible?
>
If you use #declare instead of #local then the values will be available from
outside of the macro.
#local specifically limits the scope of the variables whereas #declare gives
a global context.
Then you won't need to return anything if you don't want to.
Regards,
Chris B.
Post a reply to this message
|
|