|
|
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
|
|