getAns method
Implementation
bool getAns( int x, int y, ClipGraphAns ans ){
int num;
ParamFloat ratio = ParamFloat();
switch( _info[_curIndex]._mode ){
case ClipGlobal.graphModeRect:
ans._x = expX( _gWorld.wndPosX( x ) );
if( (num = _search( ans._x, ratio )) < -1 ){
return false;
}
if( num == -1 ){
return false;
} else if( num == _info[_curIndex]._ansNum.val() ){
return false;
} else if( ratio.val() == 0.0 ){
ans._y1 = _info[_curIndex]._ans[num]._y1;
ans._y2 = _info[_curIndex]._ans[num]._y2;
} else {
ans._y1 = _info[_curIndex]._ans[num]._y1 + (_info[_curIndex]._ans[num + 1]._y1 - _info[_curIndex]._ans[num]._y1) * ratio.val();
ans._y2 = _info[_curIndex]._ans[num]._y2 + (_info[_curIndex]._ans[num + 1]._y2 - _info[_curIndex]._ans[num]._y2) * ratio.val();
}
break;
case ClipGlobal.graphModeParam:
if( (num = _searchParam( _gWorld.wndPosX( x ), _gWorld.wndPosY( y ) )) < -1 ){
return false;
}
if( num == -1 ){
return false;
} else if( num == _info[_curIndex]._ansNum.val() ){
return false;
} else {
ans._x = _info[_curIndex]._ans[num]._x ;
ans._y1 = _info[_curIndex]._ans[num]._y1;
ans._y2 = _info[_curIndex]._ans[num]._y2;
}
break;
case ClipGlobal.graphModePolar:
if( (num = _searchPolar( _gWorld.wndPosX( x ), _gWorld.wndPosY( y ), ratio )) < -1 ){
return false;
}
if( num == -1 ){
return false;
} else if( num == _info[_curIndex]._ansNum.val() ){
return false;
} else if( ratio.val() == 0.0 ){
ans._x = _info[_curIndex]._ans[num]._x ;
ans._y1 = _info[_curIndex]._ans[num]._y1;
} else {
ans._x = _info[_curIndex]._ans[num]._x + (_info[_curIndex]._ans[num + 1]._x - _info[_curIndex]._ans[num]._x ) * ratio.val();
ans._y1 = _info[_curIndex]._ans[num]._y1 + (_info[_curIndex]._ans[num + 1]._y1 - _info[_curIndex]._ans[num]._y1) * ratio.val();
}
break;
}
return true;
}