POV-Ray : Newsgroups : povray.advanced-users : Polynomial Vector / Syntax tool : Re: Polynomial Vector / Syntax tool Server Time
6 May 2024 02:55:32 EDT (-0400)
  Re: Polynomial Vector / Syntax tool  
From: Bald Eagle
Date: 19 Oct 2017 10:20:00
Message: <web.59e8b4256449c4e8c437ac910@news.povray.org>
clipka <ano### [at] anonymousorg> wrote:

> I'd expect this to depend on both the order and "density" of the
> coefficient matrix, i.e. how many coefficients are non-zero.

Yes, that makes sense - rather than a broad generalization that one object type
renders faster than another.

Much more better.

> If you have
> many zero coefficients, it may be faster to execute a corresponding
> user-defined function than to compute the full set of polynomial terms
> and then multiply most of them by zero.

Hmm.  Makes sense from a mathematical perspective, and suggests that there may
be room for improvement in the code - check for zero coefficients and bail out
on any subsequent calculations --- if that's at all possible in the algorithms
used.

> For example, given the function
>
>     f(x,y,z) = x^2 + y^2 + z^2
>
> and
>
>     f(x,y,z) = x^10 + y^10 + z^10
>
> this should require roughly the same effort when using an isosurface,
> but when using a polynomial the second function will require a much
> higher effort to solve.

I will have to think about that for a while to understand why.

At the moment I can only assume it because of the statement in the docs that
asserts that isosurfaces are only approximations, whereas polynomials are
'exact' solutions.


> This is defined by the `MAX_ORDER` constant in the source code, which
> was "recently" increased by Jerome Grimbert (aka Le_Forgeron).

Very nice.  (Thanks Jerome!)  :)
He is one very busy bee.

> The previous limit of 15 was rather arbitrary; the current limit of 35
> is imposed by the `binomials` precomputed table in `polynomial.cpp`,
> which would require more than 32 bits per entry if the limit was
> increased above 35.

I'm guessing that if and when 32 bit becomes completely obsolete, that a
64-bit-per-entry will determine the maximum size of the precomputed table....?

2^32 = 4294967296
2^64 = 18446744073709551616

I don't have any clue how to determine what order polynomial that would allow...

That said,
a 35th order polynomial requires an 8436-term vector.  :O
And 35th order is pretty damned impressive - and some might say ... excessive
:D

I am of course interested in how to represent and expand polynomial orders of 7
through (maybe) 35.
Is the table (and the number of terms calculation) based upon something like (x
+ y + z)^Order ?

Also, if that's the case, then I'm assuming that the (maximum) number of terms
for a binomial expression (only x & y) is ((Order+1)*(Order+2))/someDivisor

I am curious as to how the polynomial object is ... bounded.


Post a reply to this message

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