|
|
Am 20.08.2014 14:29, schrieb James Holsenback:
> I added some debug in OTO_Get_Mask like this:
>
> #macro OTO_Get_Mask(Cell)
> #local CX = Cell.x;
> #local CY = Cell.y;
> #local Result = OTO_FMask(CX,CY,0);
> #debug concat ("OTO_Get_Mask <",vstr(3,Cell,",",2,4),">
> Result:",str(Result,2,4),"\n")
> OTO_FMask(CX,CY,0)
> #end
>
> and it produced the following output:
>
> OTO_Get_Mask <-8.0000,-5.0000,0.0000> Result:1.0000
> else: <-8.08857,-4.96521,0.00000>, <-6.81513, -3.69069, 0.00000>
>
> OTO_Get_Mask <-7.0000,-5.0000,0.0000> Result:0.0000
> else: <-6.96521,-4.79876,0.00000>, <-6.19790, -3.81513, 0.00000>
>
> OTO_Get_Mask <-6.0000,-5.0000,0.0000> Result:1.0000
> else: <-5.79876,-4.73380,0.00000>, <-4.90749, -4.19790, 0.00000>
>
> OTO_Get_Mask <-5.0000,-5.0000,0.0000> Result:0.0000
> else: <-4.73380,-4.96589,0.00000>, <-4.33468, -3.90749, 0.00000>
>
> OTO_Get_Mask <-4.0000,-5.0000,0.0000> Result:1.0000
> else: <-3.96589,-5.17163,0.00000>, <-3.41528, -4.33468, 0.00000>
Can you repeat this with a much higher precision for the result? 20
digits should be enough. I wouldn't be surprised if this was some kind
of precision issue in the function{pattern{pigment_pattern}} construct,
as it would perfectly explain why it doesn't compare equal to 1.0. (I
consider it unlikely that the comparison with 1.0 itself got broken
somehow, and I think there /is/ a bit of code in the pigment_pattern
that might be subject to rounding errors.)
Post a reply to this message
|
|