POV-Ray : Newsgroups : povray.general : Pattern function errors : Re: Pattern function errors Server Time
30 Jul 2024 20:22:36 EDT (-0400)
  Re: Pattern function errors  
From: Mike Williams
Date: 7 Jul 2008 04:42:13
Message: <OuZ4ZaDSbdcIFwJd@econym.demon.co.uk>
Wasn't it SharkD who wrote:
>I am having problems with the following pattern:
>
>pigment
>{
> function {sqrt(pow(x,2) + pow(z,2)) / cos(asin(abs(y)))}
> pigment_map
> {
>  [0 color rgb 0]
>  [1 color rgb <0,1,0,>]
> }
>}
>
>POV-Ray gives the following error:
>
>"Parse Error: Floating-point exception detected in function ''. Your function
>either attempted a division by zero, used a function outside
>its domain or called an internal function with invalid parameters."
>
>Could somebody please explaing to me why this is and what I can do to fix it?

The problem is that asin(foo) is only defined for values of foo between 
-1 and +1. If, say y=3 then there is no asin(abs(3)) and you get the 
second cause of that error message "your function ... used a function 
outside its domain"

If you apply the pigment to an object that lies between y=-1 and y=1, 
then it works.

sphere {0,1
  scale <5,0.5,5>
  pigment{
   function {sqrt(pow(x,2) + pow(z,2)) / cos(asin(abs(y)))}
   pigment_map {
    [0 color rgb 0]
    [1 color rgb <0,1,0,>]
   }
  }
}

If you want to use it on an object that doesn't lie within that region, 
then you need to consider what colour you want to have for points 
outside that region and code it accordingly.

-- 
Mike Williams
Gentleman of Leisure


Post a reply to this message

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