FixedPoints hypothesis: fix problem with values close to 0.0 and 1.0

This commit is contained in:
vsr 2009-09-29 16:52:15 +00:00
parent 3fa4acc3ab
commit 96313c9c5d

View File

@ -48,6 +48,8 @@
#define TOLERANCE 1e-7 #define TOLERANCE 1e-7
#define EQUAL_DBL(a,b) (fabs(a-b)<TOLERANCE) #define EQUAL_DBL(a,b) (fabs(a-b)<TOLERANCE)
#define LT_DBL(a,b) ((a<b)&&!EQUAL_DBL(a,b))
#define GT_DBL(a,b) ((a>b)&&!EQUAL_DBL(a,b))
/* /*
* class : Tree Widget Item Delegate * class : Tree Widget Item Delegate
@ -255,13 +257,13 @@ QString StdMeshersGUI_FixedPointsParamWdg::treeItemText( double v1, double v2 )
//================================================================================= //=================================================================================
void StdMeshersGUI_FixedPointsParamWdg::addPoint( double v) void StdMeshersGUI_FixedPointsParamWdg::addPoint( double v)
{ {
if ( v > 0 && v < 1) { if ( GT_DBL(v, 0.0) && LT_DBL(v, 1.0)) {
bool toInsert = true; bool toInsert = true;
int idx = myTreeWidget->topLevelItemCount()-1; int idx = myTreeWidget->topLevelItemCount()-1;
for ( int i = 0 ; i < myListWidget->count(); i++ ) { for ( int i = 0 ; i < myListWidget->count(); i++ ) {
double lv = point( i ); double lv = point( i );
if ( EQUAL_DBL(lv,v) ) { toInsert = false; break; } if ( EQUAL_DBL(lv, v) ) { toInsert = false; break; }
else if ( lv > v ) { else if ( GT_DBL(lv, v) ) {
idx = i; break; idx = i; break;
} }
} }
@ -333,7 +335,8 @@ void StdMeshersGUI_FixedPointsParamWdg::onCheckBoxChanged()
//================================================================================= //=================================================================================
void StdMeshersGUI_FixedPointsParamWdg::updateState() void StdMeshersGUI_FixedPointsParamWdg::updateState()
{ {
myAddButton->setEnabled( mySpinBox->value() > 0 && mySpinBox->value() < 1 ); double v = mySpinBox->value();
myAddButton->setEnabled( GT_DBL(v, 0.0) && LT_DBL(v, 1.0) );
myRemoveButton->setEnabled( myListWidget->selectedItems().count() > 0 ); myRemoveButton->setEnabled( myListWidget->selectedItems().count() > 0 );
} }