|
 |
On 9/11/25 10:36, Bald Eagle wrote:
>> Attached an image of some more testing. It includes the fix for the
>> segment blink out issue & that fix looks good thus far.
> So what did you do?
The current fix is:
if ((r[n] >= y[0]) && (r[n] <= y[1]))
{
// x[n] = sqrt(r[n] * (r[n] * (r[n] * A + B) + C) + D);
double tmpVal = (r[n] * (r[n] * (r[n] * A + B) + C) + D);
if (tmpVal>=0.0)
x[n] = sqrt(tmpVal);
else
{
tmpVal = std::abs(tmpVal);
x[n] = sqrt(tmpVal);
x[n] *= -1.0;
}
}
As for the bounding suggestion, I don't know. Of note is that the
Radius1 value is never used that I see.
Something I did try was faking a user bounding radius multiplier option.
In some configurations where only a subset of the on curve points were
negative in x. It often helped with apparent clipping - but there always
remained some issue with the the ray directions relative to the overall
sor - where all or part of sor 'segment(s)' would drop away (this an
issue apart from the entire-segment blink out issue up top).
My wild guess. There are internally calculated A,B,C,D values used for
the quadratic eqn solved while setting the two bounding radii values.
Those calculated values involve the x values as given for the sor point
set. Maybe something could go 'more right' there when negative values
are present - I don't know.
Bill P.
Post a reply to this message
|
 |