Improved tolerances, Intel 12
This commit is contained in:
parent
59e15370ce
commit
e00c34e985
1 changed files with 23 additions and 13 deletions
|
@ -331,7 +331,10 @@ bool Foam::treeBoundBox::intersects
|
||||||
|
|
||||||
scalar s;
|
scalar s;
|
||||||
|
|
||||||
static const scalar smallNumber = SMALL;
|
//HJ, experimental: problems with round-off on Intel 12 compiler.
|
||||||
|
// HJ, 29/Sep/2011
|
||||||
|
const scalar smallNumber = SMALL;
|
||||||
|
const scalar kSmall = 1000*SMALL;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
@ -356,10 +359,11 @@ bool Foam::treeBoundBox::intersects
|
||||||
if (ptBits & LEFTBIT)
|
if (ptBits & LEFTBIT)
|
||||||
{
|
{
|
||||||
// Intersect with plane V=min, n=-1,0,0
|
// Intersect with plane V=min, n=-1,0,0
|
||||||
if (Foam::mag(overallVec.x()) > VSMALL)
|
if (Foam::mag(overallVec.x()) > kSmall)
|
||||||
{
|
{
|
||||||
s = (min().x() - overallStart.x())/
|
s = (min().x() - overallStart.x())/
|
||||||
stabilise(overallVec.x(), smallNumber);
|
overallVec.x();
|
||||||
|
// stabilise(overallVec.x(), smallNumber);
|
||||||
|
|
||||||
pt.x() = min().x();
|
pt.x() = min().x();
|
||||||
pt.y() = overallStart.y() + overallVec.y()*s;
|
pt.y() = overallStart.y() + overallVec.y()*s;
|
||||||
|
@ -375,10 +379,11 @@ bool Foam::treeBoundBox::intersects
|
||||||
else if (ptBits & RIGHTBIT)
|
else if (ptBits & RIGHTBIT)
|
||||||
{
|
{
|
||||||
// Intersect with plane V=max, n=1,0,0
|
// Intersect with plane V=max, n=1,0,0
|
||||||
if (Foam::mag(overallVec.x()) > VSMALL)
|
if (Foam::mag(overallVec.x()) > kSmall)
|
||||||
{
|
{
|
||||||
s = (max().x() - overallStart.x())/
|
s = (max().x() - overallStart.x())/
|
||||||
stabilise(overallVec.x(), smallNumber);
|
overallVec.x();
|
||||||
|
// stabilise(overallVec.x(), smallNumber);
|
||||||
|
|
||||||
pt.x() = max().x();
|
pt.x() = max().x();
|
||||||
pt.y() = overallStart.y() + overallVec.y()*s;
|
pt.y() = overallStart.y() + overallVec.y()*s;
|
||||||
|
@ -392,10 +397,11 @@ bool Foam::treeBoundBox::intersects
|
||||||
else if (ptBits & BOTTOMBIT)
|
else if (ptBits & BOTTOMBIT)
|
||||||
{
|
{
|
||||||
// Intersect with plane V=min, n=0,-1,0
|
// Intersect with plane V=min, n=0,-1,0
|
||||||
if (Foam::mag(overallVec.y()) > VSMALL)
|
if (Foam::mag(overallVec.y()) > kSmall)
|
||||||
{
|
{
|
||||||
s = (min().y() - overallStart.y())/
|
s = (min().y() - overallStart.y())/
|
||||||
stabilise(overallVec.y(), smallNumber);
|
overallVec.y();
|
||||||
|
// stabilise(overallVec.y(), smallNumber);
|
||||||
|
|
||||||
pt.x() = overallStart.x() + overallVec.x()*s;
|
pt.x() = overallStart.x() + overallVec.x()*s;
|
||||||
pt.y() = min().y();
|
pt.y() = min().y();
|
||||||
|
@ -409,10 +415,11 @@ bool Foam::treeBoundBox::intersects
|
||||||
else if (ptBits & TOPBIT)
|
else if (ptBits & TOPBIT)
|
||||||
{
|
{
|
||||||
// Intersect with plane V=max, n=0,1,0
|
// Intersect with plane V=max, n=0,1,0
|
||||||
if (Foam::mag(overallVec.y()) > VSMALL)
|
if (Foam::mag(overallVec.y()) > kSmall)
|
||||||
{
|
{
|
||||||
s = (max().y() - overallStart.y())/
|
s = (max().y() - overallStart.y())/
|
||||||
stabilise(overallVec.y(), smallNumber);
|
overallVec.y();
|
||||||
|
// stabilise(overallVec.y(), smallNumber);
|
||||||
|
|
||||||
pt.x() = overallStart.x() + overallVec.x()*s;
|
pt.x() = overallStart.x() + overallVec.x()*s;
|
||||||
pt.y() = max().y();
|
pt.y() = max().y();
|
||||||
|
@ -426,10 +433,12 @@ bool Foam::treeBoundBox::intersects
|
||||||
else if (ptBits & BACKBIT)
|
else if (ptBits & BACKBIT)
|
||||||
{
|
{
|
||||||
// Intersect with plane V=min, n=0,0,-1
|
// Intersect with plane V=min, n=0,0,-1
|
||||||
if (Foam::mag(overallVec.z()) > VSMALL)
|
if (Foam::mag(overallVec.z()) > kSmall)
|
||||||
{
|
{
|
||||||
s = (min().z() - overallStart.z())/
|
s = (min().z() - overallStart.z())/
|
||||||
stabilise(overallVec.z(), smallNumber);
|
overallVec.z();
|
||||||
|
// stabilise(overallVec.z(), smallNumber);
|
||||||
|
|
||||||
pt.x() = overallStart.x() + overallVec.x()*s;
|
pt.x() = overallStart.x() + overallVec.x()*s;
|
||||||
pt.y() = overallStart.y() + overallVec.y()*s;
|
pt.y() = overallStart.y() + overallVec.y()*s;
|
||||||
pt.z() = min().z();
|
pt.z() = min().z();
|
||||||
|
@ -442,10 +451,11 @@ bool Foam::treeBoundBox::intersects
|
||||||
else if (ptBits & FRONTBIT)
|
else if (ptBits & FRONTBIT)
|
||||||
{
|
{
|
||||||
// Intersect with plane V=max, n=0,0,1
|
// Intersect with plane V=max, n=0,0,1
|
||||||
if (Foam::mag(overallVec.z()) > VSMALL)
|
if (Foam::mag(overallVec.z()) > kSmall)
|
||||||
{
|
{
|
||||||
s = (max().z() - overallStart.z())/
|
s = (max().z() - overallStart.z())/
|
||||||
stabilise(overallVec.z(), smallNumber);
|
overallVec.z();
|
||||||
|
// stabilise(overallVec.z(), smallNumber);
|
||||||
|
|
||||||
pt.x() = overallStart.x() + overallVec.x()*s;
|
pt.x() = overallStart.x() + overallVec.x()*s;
|
||||||
pt.y() = overallStart.y() + overallVec.y()*s;
|
pt.y() = overallStart.y() + overallVec.y()*s;
|
||||||
|
|
Reference in a new issue