Hi Anton, 

the attached patch fixes all instances of isnan/isinf compilation
errors. I did a test build against libvtk6.3 (which passes), therefore
I came across this problem). 

best, 
Gert 
--- a/gui/qt4/GLViewer.cpp
+++ b/gui/qt4/GLViewer.cpp
@@ -28,6 +28,8 @@
 	#include<gl2ps.h>
 #endif
 
+using std::isnan;
+
 static unsigned initBlocked(State::DOF_NONE);
 
 CREATE_LOGGER(GLViewer);
--- a/home/gerddie/vtk63-transition/yade-1.20.0/gui/qt5/GLViewer.cpp
+++ /dev/null
@@ -1,488 +0,0 @@
-/*************************************************************************
-*  Copyright (C) 2004 by Olivier Galizzi                                 *
-*  olivier.gali...@imag.fr                                               *
-*  Copyright (C) 2005 by Janek Kozicki                                   *
-*  cosu...@berlios.de                                                    *
-*                                                                        *
-*  This program is free software; it is licensed under the terms of the  *
-*  GNU General Public License v2 or later. See file LICENSE for details. *
-*************************************************************************/
-
-#include"GLViewer.hpp"
-#include"OpenGLManager.hpp"
-
-#include<lib/opengl/OpenGLWrapper.hpp>
-#include<core/Body.hpp>
-#include<core/Scene.hpp>
-#include<core/Interaction.hpp>
-#include<core/DisplayParameters.hpp>
-#include<boost/algorithm/string.hpp>
-#include<sstream>
-#include<iomanip>
-#include<boost/algorithm/string/case_conv.hpp>
-#include<lib/serialization/ObjectIO.hpp>
-#include<lib/pyutil/gil.hpp>
-#include<QtGui/qevent.h>
-
-#ifdef YADE_GL2PS
-	#include<gl2ps.h>
-#endif
-
-static unsigned initBlocked(State::DOF_NONE);
-
-CREATE_LOGGER(GLViewer);
-
-GLLock::GLLock(GLViewer* _glv): boost::try_mutex::scoped_lock(Omega::instance().renderMutex), glv(_glv){
-	glv->makeCurrent();
-}
-GLLock::~GLLock(){ glv->doneCurrent(); }
-
-
-#define _W3 setw(3)<<setfill('0')
-#define _W2 setw(2)<<setfill('0')
-GLViewer::~GLViewer(){ /* get the GL mutex when closing */ GLLock lock(this); /* cerr<<"Destructing view #"<<viewId<<endl;*/ }
-
-void GLViewer::closeEvent(QCloseEvent *e){
-	LOG_DEBUG("Will emit closeView for view #"<<viewId);
-	OpenGLManager::self->emitCloseView(viewId);
-	e->accept();
-}
-
-GLViewer::GLViewer(int _viewId, const shared_ptr<OpenGLRenderer>& _renderer, QGLWidget* shareWidget): QGLViewer(/*parent*/(QWidget*)NULL,shareWidget), renderer(_renderer), viewId(_viewId) {
-	isMoving=false;
-	drawGrid=0;
-	drawScale=true;
-	timeDispMask=TIME_REAL|TIME_VIRT|TIME_ITER;
-	cut_plane = 0;
-	cut_plane_delta = -2;
-	gridSubdivide = false;
-	resize(550,550);
-	last=-1;
-	if(viewId==0) setWindowTitle("Primary view");
-	else setWindowTitle(("Secondary view #"+boost::lexical_cast<string>(viewId)).c_str());
-
-	show();
-	
-	mouseMovesCamera();
-	manipulatedClipPlane=-1;
-
-	if(manipulatedFrame()==0) setManipulatedFrame(new qglviewer::ManipulatedFrame());
-
-	xyPlaneConstraint=shared_ptr<qglviewer::LocalConstraint>(new qglviewer::LocalConstraint());
-	manipulatedFrame()->setConstraint(NULL);
-
-	setKeyDescription(Qt::Key_Return,"Run simulation.");
-	setKeyDescription(Qt::Key_A,"Toggle visibility of global axes.");
-	setKeyDescription(Qt::Key_C,"Set scene center so that all bodies are visible; if a body is selected, center around this body.");
-	setKeyDescription(Qt::Key_C & Qt::AltModifier,"Set scene center to median body position (same as space)");
-	setKeyDescription(Qt::Key_D,"Toggle time display mask");
-	setKeyDescription(Qt::Key_G,"Toggle grid visibility; g turns on and cycles");
-	setKeyDescription(Qt::Key_G & Qt::ShiftModifier ,"Hide grid.");
-	setKeyDescription(Qt::Key_M, "Move selected object.");
-	setKeyDescription(Qt::Key_X,"Show the xz [shift: xy] (up-right) plane (clip plane: align normal with +x)");
-	setKeyDescription(Qt::Key_Y,"Show the yx [shift: yz] (up-right) plane (clip plane: align normal with +y)");
-	setKeyDescription(Qt::Key_Z,"Show the zy [shift: zx] (up-right) plane (clip plane: align normal with +z)");
-	setKeyDescription(Qt::Key_Period,"Toggle grid subdivision by 10");
-	setKeyDescription(Qt::Key_S,"Save QGLViewer state to /tmp/qglviewerState.xml");
-	setKeyDescription(Qt::Key_T,"Switch orthographic / perspective camera");
-	setKeyDescription(Qt::Key_O,"Set narrower field of view");
-	setKeyDescription(Qt::Key_P,"Set wider field of view");
-	setKeyDescription(Qt::Key_R,"Revolve around scene center");
-	setKeyDescription(Qt::Key_V,"Save PDF of the current view to /tmp/yade-snapshot-0001.pdf (whichever number is available first). (Must be compiled with the gl2ps feature.)");
- 	setPathKey(-Qt::Key_F1);
- 	setPathKey(-Qt::Key_F2);
-	setKeyDescription(Qt::Key_Escape,"Manipulate scene (default)");
-	setKeyDescription(Qt::Key_F1,"Manipulate clipping plane #1");
-	setKeyDescription(Qt::Key_F2,"Manipulate clipping plane #2");
-	setKeyDescription(Qt::Key_F3,"Manipulate clipping plane #3");
-	setKeyDescription(Qt::Key_1,"Make the manipulated clipping plane parallel with plane #1");
-	setKeyDescription(Qt::Key_2,"Make the manipulated clipping plane parallel with plane #2");
-	setKeyDescription(Qt::Key_2,"Make the manipulated clipping plane parallel with plane #3");
-	setKeyDescription(Qt::Key_1 & Qt::AltModifier,"Add/remove plane #1 to/from the bound group");
-	setKeyDescription(Qt::Key_2 & Qt::AltModifier,"Add/remove plane #2 to/from the bound group");
-	setKeyDescription(Qt::Key_3 & Qt::AltModifier,"Add/remove plane #3 to/from the bound group");
-	setKeyDescription(Qt::Key_0,"Clear the bound group");
-	setKeyDescription(Qt::Key_7,"Load [Alt: save] view configuration #0");
-	setKeyDescription(Qt::Key_8,"Load [Alt: save] view configuration #1");
-	setKeyDescription(Qt::Key_9,"Load [Alt: save] view configuration #2");
-	setKeyDescription(Qt::Key_Space,"Center scene (same as Alt-C); clip plane: activate/deactivate");
-
-	centerScene();
-}
-
-bool GLViewer::isManipulating(){
-	return isMoving || manipulatedClipPlane>=0;
-}
-
-void GLViewer::resetManipulation(){
-	mouseMovesCamera();
-	setSelectedName(-1);
-	isMoving=false;
-	manipulatedClipPlane=-1;
-}
-
-void GLViewer::startClipPlaneManipulation(int planeNo){
-	assert(planeNo<renderer->numClipPlanes);
-	resetManipulation();
-	mouseMovesManipulatedFrame(xyPlaneConstraint.get());
-	manipulatedClipPlane=planeNo;
-	const Se3r se3(renderer->clipPlaneSe3[planeNo]);
-	manipulatedFrame()->setPositionAndOrientation(qglviewer::Vec(se3.position[0],se3.position[1],se3.position[2]),qglviewer::Quaternion(se3.orientation.x(),se3.orientation.y(),se3.orientation.z(),se3.orientation.w()));
-	string grp=strBoundGroup();
-	displayMessage("Manipulating clip plane #"+boost::lexical_cast<string>(planeNo+1)+(grp.empty()?grp:" (bound planes:"+grp+")"));
-}
-
-string GLViewer::getState(){
-	QString origStateFileName=stateFileName();
-	string tmpFile=Omega::instance().tmpFilename();
-	setStateFileName(QString(tmpFile.c_str())); saveStateToFile(); setStateFileName(origStateFileName);
-	LOG_WARN("State saved to temp file "<<tmpFile);
-	// read tmp file contents and return it as string
-	// this will replace all whitespace by space (nowlines will disappear, which is what we want)
-	ifstream in(tmpFile.c_str()); string ret; while(!in.eof()){string ss; in>>ss; ret+=" "+ss;}; in.close();
-	boost::filesystem::remove(boost::filesystem::path(tmpFile));
-	return ret;
-}
-
-void GLViewer::setState(string state){
-	string tmpFile=Omega::instance().tmpFilename();
-	std::ofstream out(tmpFile.c_str());
-	if(!out.good()){ LOG_ERROR("Error opening temp file `"<<tmpFile<<"', loading aborted."); return; }
-	out<<state; out.close();
-	LOG_WARN("Will load state from temp file "<<tmpFile);
-	QString origStateFileName=stateFileName(); setStateFileName(QString(tmpFile.c_str())); restoreStateFromFile(); setStateFileName(origStateFileName);
-	boost::filesystem::remove(boost::filesystem::path(tmpFile));
-}
-
-void GLViewer::keyPressEvent(QKeyEvent *e)
-{
-	last_user_event = boost::posix_time::second_clock::local_time();
-
-	if(false){}
-	/* special keys: Escape and Space */
-	else if(e->key()==Qt::Key_A){ toggleAxisIsDrawn(); return; }
-	else if(e->key()==Qt::Key_Escape){
-		if(!isManipulating()){ setSelectedName(-1); return; }
-		else { resetManipulation(); displayMessage("Manipulating scene."); }
-	}
-	else if(e->key()==Qt::Key_Space){
-		if(manipulatedClipPlane>=0) {displayMessage("Clip plane #"+boost::lexical_cast<string>(manipulatedClipPlane+1)+(renderer->clipPlaneActive[manipulatedClipPlane]?" de":" ")+"activated"); renderer->clipPlaneActive[manipulatedClipPlane]=!renderer->clipPlaneActive[manipulatedClipPlane]; }
-		else{ centerMedianQuartile(); }
-	}
-	/* function keys */
-	else if(e->key()==Qt::Key_F1 || e->key()==Qt::Key_F2 || e->key()==Qt::Key_F3 /* || ... */ ){
-		int n=0; if(e->key()==Qt::Key_F1) n=1; else if(e->key()==Qt::Key_F2) n=2; else if(e->key()==Qt::Key_F3) n=3; assert(n>0); int planeId=n-1;
-		if(planeId>=renderer->numClipPlanes) return;
-		if(planeId!=manipulatedClipPlane) startClipPlaneManipulation(planeId);
-	}
-	/* numbers */
-	else if(e->key()==Qt::Key_0 && (e->modifiers() & Qt::AltModifier)) { boundClipPlanes.clear(); displayMessage("Cleared bound planes group.");}
-	else if(e->key()==Qt::Key_1 || e->key()==Qt::Key_2 || e->key()==Qt::Key_3 /* || ... */ ){
-		int n=0; if(e->key()==Qt::Key_1) n=1; else if(e->key()==Qt::Key_2) n=2; else if(e->key()==Qt::Key_3) n=3; assert(n>0); int planeId=n-1;
-		if(planeId>=renderer->numClipPlanes) return; // no such clipping plane
-		if(e->modifiers() & Qt::AltModifier){
-			if(boundClipPlanes.count(planeId)==0) {boundClipPlanes.insert(planeId); displayMessage("Added plane #"+boost::lexical_cast<string>(planeId+1)+" to the bound group: "+strBoundGroup());}
-			else {boundClipPlanes.erase(planeId); displayMessage("Removed plane #"+boost::lexical_cast<string>(planeId+1)+" from the bound group: "+strBoundGroup());}
-		}
-		else if(manipulatedClipPlane>=0 && manipulatedClipPlane!=planeId) {
-			const Quaternionr& o=renderer->clipPlaneSe3[planeId].orientation;
-			manipulatedFrame()->setOrientation(qglviewer::Quaternion(o.x(),o.y(),o.z(),o.w()));
-			displayMessage("Copied orientation from plane #1");
-		}
-	}
-	else if(e->key()==Qt::Key_7 || e->key()==Qt::Key_8 || e->key()==Qt::Key_9){
-		int nn=-1; if(e->key()==Qt::Key_7)nn=0; else if(e->key()==Qt::Key_8)nn=1; else if(e->key()==Qt::Key_9)nn=2; assert(nn>=0); size_t n=(size_t)nn;
-		if(e->modifiers() & Qt::AltModifier) saveDisplayParameters(n);
-		else useDisplayParameters(n);
-	}
-	/* letters alphabetically */
-	else if(e->key()==Qt::Key_C && (e->modifiers() & Qt::AltModifier)){ displayMessage("Median centering"); centerMedianQuartile(); }
-	else if(e->key()==Qt::Key_C){
-		// center around selected body
-		if(selectedName() >= 0 && (*(Omega::instance().getScene()->bodies)).exists(selectedName())) setSceneCenter(manipulatedFrame()->position());
-		// make all bodies visible
-		else centerScene();
-	}
-	else if(e->key()==Qt::Key_D &&(e->modifiers() & Qt::AltModifier)){ Body::id_t id; if((id=Omega::instance().getScene()->selectedBody)>=0){ const shared_ptr<Body>& b=Body::byId(id); b->setDynamic(!b->isDynamic()); LOG_INFO("Body #"<<id<<" now "<<(b->isDynamic()?"":"NOT")<<" dynamic"); } }
-	else if(e->key()==Qt::Key_D) {timeDispMask+=1; if(timeDispMask>(TIME_REAL|TIME_VIRT|TIME_ITER))timeDispMask=0; }
-	else if(e->key()==Qt::Key_G) { if(e->modifiers() & Qt::ShiftModifier){ drawGrid=0; return; } else drawGrid++; if(drawGrid>=8) drawGrid=0; }
-	else if (e->key()==Qt::Key_M && selectedName() >= 0){ 
-		if(!(isMoving=!isMoving)){
-			displayMessage("Moving done.");
-			if (last>=0) {Body::byId(Body::id_t(last))->state->blockedDOFs=initBlocked; last=-1;} mouseMovesCamera();}
-		else{ 	displayMessage("Moving selected object");
-			
-			long selection = Omega::instance().getScene()->selectedBody;
-			initBlocked=Body::byId(Body::id_t(selection))->state->blockedDOFs; last=selection;
-			Body::byId(Body::id_t(selection))->state->blockedDOFs=State::DOF_ALL;
-			Quaternionr& q = Body::byId(selection)->state->ori;
-			Vector3r&    v = Body::byId(selection)->state->pos;
-			manipulatedFrame()->setPositionAndOrientation(qglviewer::Vec(v[0],v[1],v[2]),qglviewer::Quaternion(q.x(),q.y(),q.z(),q.w()));
-			mouseMovesManipulatedFrame();}
-	}
-	else if (e->key() == Qt::Key_T) camera()->setType(camera()->type()==qglviewer::Camera::ORTHOGRAPHIC ? qglviewer::Camera::PERSPECTIVE : qglviewer::Camera::ORTHOGRAPHIC);
-	else if(e->key()==Qt::Key_O) camera()->setFieldOfView(camera()->fieldOfView()*0.9);
-	else if(e->key()==Qt::Key_P) camera()->setFieldOfView(camera()->fieldOfView()*1.1);
-	else if(e->key()==Qt::Key_R){ // reverse the clipping plane; revolve around scene center if no clipping plane selected
-		if(manipulatedClipPlane>=0 && manipulatedClipPlane<renderer->numClipPlanes){
-			/* here, we must update both manipulatedFrame orientation and renderer->clipPlaneSe3 orientation in the same way */
-			Quaternionr& ori=renderer->clipPlaneSe3[manipulatedClipPlane].orientation;
-			ori=Quaternionr(AngleAxisr(Mathr::PI,Vector3r(0,1,0)))*ori; 
-			manipulatedFrame()->setOrientation(qglviewer::Quaternion(qglviewer::Vec(0,1,0),Mathr::PI)*manipulatedFrame()->orientation());
-			displayMessage("Plane #"+boost::lexical_cast<string>(manipulatedClipPlane+1)+" reversed.");
-		}
-		else {
-			camera()->setRevolveAroundPoint(sceneCenter());
-		}
-	}
-	else if(e->key()==Qt::Key_S){
-		LOG_INFO("Saving QGLViewer state to /tmp/qglviewerState.xml");
-		setStateFileName("/tmp/qglviewerState.xml"); saveStateToFile(); setStateFileName(QString::null);
-	}
-	else if(e->key()==Qt::Key_L){
-		LOG_INFO("Loading QGLViewer state from /tmp/qglviewerState.xml");
-		setStateFileName("/tmp/qglviewerState.xml"); restoreStateFromFile(); setStateFileName(QString::null);
-	}
-	else if(e->key()==Qt::Key_X || e->key()==Qt::Key_Y || e->key()==Qt::Key_Z){
-		int axisIdx=(e->key()==Qt::Key_X?0:(e->key()==Qt::Key_Y?1:2));
-		if(manipulatedClipPlane<0){
-			qglviewer::Vec up(0,0,0), vDir(0,0,0);
-			bool alt=(e->modifiers() && Qt::ShiftModifier);
-			up[axisIdx]=1; vDir[(axisIdx+(alt?2:1))%3]=alt?1:-1;
-			camera()->setViewDirection(vDir);
-			camera()->setUpVector(up);
-			centerMedianQuartile();
-		}
-		else{ // align clipping normal plane with world axis
-			// x: (0,1,0),pi/2; y: (0,0,1),pi/2; z: (1,0,0),0
-			qglviewer::Vec axis(0,0,0); axis[(axisIdx+1)%3]=1; Real angle=axisIdx==2?0:Mathr::PI/2;
-			manipulatedFrame()->setOrientation(qglviewer::Quaternion(axis,angle));
-		}
-	}
-	else if(e->key()==Qt::Key_Period) gridSubdivide = !gridSubdivide;
-	else if(e->key()==Qt::Key_Return){
-		if (Omega::instance().isRunning()) Omega::instance().pause();
-		else Omega::instance().run();
-		LOG_INFO("Running...");
-	}
-#ifdef YADE_GL2PS
-	else if(e->key()==Qt::Key_V){
-		for(int i=0; ;i++){
-			std::ostringstream fss; fss<<"/tmp/yade-snapshot-"<<setw(4)<<setfill('0')<<i<<".pdf";
-			if(!boost::filesystem::exists(fss.str())){ nextFrameSnapshotFilename=fss.str(); break; }
-		}
-		LOG_INFO("Will save snapshot to "<<nextFrameSnapshotFilename);
-	}
-#endif
-#if 0
-	else if( e->key()==Qt::Key_Plus ){
-			cut_plane = std::min(1.0, cut_plane + std::pow(10.0,(double)cut_plane_delta));
-			static_cast<YadeCamera*>(camera())->setCuttingDistance(cut_plane);
-			displayMessage("Cut plane: "+boost::lexical_cast<std::string>(cut_plane));
-	}else if( e->key()==Qt::Key_Minus ){
-			cut_plane = std::max(0.0, cut_plane - std::pow(10.0,(double)cut_plane_delta));
-			static_cast<YadeCamera*>(camera())->setCuttingDistance(cut_plane);
-			displayMessage("Cut plane: "+boost::lexical_cast<std::string>(cut_plane));
-	}else if( e->key()==Qt::Key_Slash ){
-			cut_plane_delta -= 1;
-			displayMessage("Cut plane increment: 1e"+(cut_plane_delta>0?std::string("+"):std::string(""))+boost::lexical_cast<std::string>(cut_plane_delta));
-	}else if( e->key()==Qt::Key_Asterisk ){
-			cut_plane_delta = std::min(1+cut_plane_delta,-1);
-			displayMessage("Cut plane increment: 1e"+(cut_plane_delta>0?std::string("+"):std::string(""))+boost::lexical_cast<std::string>(cut_plane_delta));
-	}
-#endif
-
-	else if(e->key()!=Qt::Key_Escape && e->key()!=Qt::Key_Space) QGLViewer::keyPressEvent(e);
-	updateGL();
-}
-/* Center the scene such that periodic cell is contained in the view */
-void GLViewer::centerPeriodic(){
-	Scene* scene=Omega::instance().getScene().get();
-	assert(scene->isPeriodic);
-	Vector3r center=.5*scene->cell->getSize();
-	Vector3r halfSize=.5*scene->cell->getSize();
-	float radius=std::max(halfSize[0],std::max(halfSize[1],halfSize[2]));
-	LOG_DEBUG("Periodic scene center="<<center<<", halfSize="<<halfSize<<", radius="<<radius);
-	setSceneCenter(qglviewer::Vec(center[0],center[1],center[2]));
-	setSceneRadius(radius*1.5);
-	showEntireScene();
-}
-
-/* Calculate medians for x, y and z coordinates of all bodies;
- *then set scene center to median position and scene radius to 2*inter-quartile distance.
- *
- * This function eliminates the effect of lonely bodies that went nuts and enlarge
- * the scene's Aabb in such a way that fitting the scene to see the Aabb makes the
- * "central" (where most bodies is) part very small or even invisible.
- */
-void GLViewer::centerMedianQuartile(){
-	Scene* scene=Omega::instance().getScene().get();
-	if(scene->isPeriodic){ centerPeriodic(); return; }
-	long nBodies=scene->bodies->size();
-	if(nBodies<4) {
-		LOG_DEBUG("Less than 4 bodies, median makes no sense; calling centerScene() instead.");
-		return centerScene();
-	}
-	std::vector<Real> coords[3];
-	for(int i=0;i<3;i++)coords[i].reserve(nBodies);
-	FOREACH(shared_ptr<Body> b, *scene->bodies){
-		if(!b) continue;
-		for(int i=0; i<3; i++) coords[i].push_back(b->state->pos[i]);
-	}
-	Vector3r median,interQuart;
-	for(int i=0;i<3;i++){
-		sort(coords[i].begin(),coords[i].end());
-		median[i]=*(coords[i].begin()+nBodies/2);
-		interQuart[i]=*(coords[i].begin()+3*nBodies/4)-*(coords[i].begin()+nBodies/4);
-	}
-	LOG_DEBUG("Median position is"<<median<<", inter-quartile distance is "<<interQuart);
-	setSceneCenter(qglviewer::Vec(median[0],median[1],median[2]));
-	setSceneRadius(2*(interQuart[0]+interQuart[1]+interQuart[2])/3.);
-	showEntireScene();
-}
-
-void GLViewer::centerScene(){
-	Scene* rb=Omega::instance().getScene().get();
-	if (!rb) return;
-	if(rb->isPeriodic){ centerPeriodic(); return; }
-	LOG_INFO("Select with shift, press 'm' to move.");
-	Vector3r min,max;	
-	if(not(rb->bound)){ rb->updateBound();}
-	
-	min=rb->bound->min; max=rb->bound->max;
-	bool hasNan=(isnan(min[0])||isnan(min[1])||isnan(min[2])||isnan(max[0])||isnan(max[1])||isnan(max[2]));
-	Real minDim=std::min(max[0]-min[0],std::min(max[1]-min[1],max[2]-min[2]));
-	if(minDim<=0 || hasNan){
-		// Aabb is not yet calculated...
-		LOG_DEBUG("scene's bound not yet calculated or has zero or nan dimension(s), attempt get that from bodies' positions.");
-		Real inf=std::numeric_limits<Real>::infinity();
-		min=Vector3r(inf,inf,inf); max=Vector3r(-inf,-inf,-inf);
-		FOREACH(const shared_ptr<Body>& b, *rb->bodies){
-			if(!b) continue;
-			max=max.cwiseMax(b->state->pos);
-			min=min.cwiseMin(b->state->pos);
-		}
-		if(isinf(min[0])||isinf(min[1])||isinf(min[2])||isinf(max[0])||isinf(max[1])||isinf(max[2])){ LOG_DEBUG("No min/max computed from bodies either, setting cube (-1,-1,-1)×(1,1,1)"); min=-Vector3r::Ones(); max=Vector3r::Ones(); }
-	} else {LOG_DEBUG("Using scene's Aabb");}
-
-	LOG_DEBUG("Got scene box min="<<min<<" and max="<<max);
-	Vector3r center = (max+min)*0.5;
-	Vector3r halfSize = (max-min)*0.5;
-	float radius=std::max(halfSize[0],std::max(halfSize[1],halfSize[2])); if(radius<=0) radius=1;
-	LOG_DEBUG("Scene center="<<center<<", halfSize="<<halfSize<<", radius="<<radius);
-	setSceneCenter(qglviewer::Vec(center[0],center[1],center[2]));
-	setSceneRadius(radius*1.5);
-	showEntireScene();
-}
-
-// new object selected.
-// set frame coordinates, and isDynamic=false;
-void GLViewer::postSelection(const QPoint& point) 
-{
-	LOG_DEBUG("Selection is "<<selectedName());
-	int selection = selectedName();
-	if(selection<0){
-		if (last>=0) {
-			Body::byId(Body::id_t(last))->state->blockedDOFs=initBlocked; last=-1; Omega::instance().getScene()->selectedBody = -1;}
-		if(isMoving){
-			displayMessage("Moving finished"); mouseMovesCamera(); isMoving=false;
-			Omega::instance().getScene()->selectedBody = -1;
-		}
-		return;
-	}
-	if(selection>=0 && (*(Omega::instance().getScene()->bodies)).exists(selection)){
-		resetManipulation();
-		if (last>=0) {Body::byId(Body::id_t(last))->state->blockedDOFs=initBlocked; last=-1;}
-		if(Body::byId(Body::id_t(selection))->isClumpMember()){ // select clump (invisible) instead of its member
-			LOG_DEBUG("Clump member #"<<selection<<" selected, selecting clump instead.");
-			selection=Body::byId(Body::id_t(selection))->clumpId;			
-		}
-		
-		setSelectedName(selection);
-		LOG_DEBUG("New selection "<<selection);
-		displayMessage("Selected body #"+boost::lexical_cast<string>(selection)+(Body::byId(selection)->isClump()?" (clump)":""));
-		Omega::instance().getScene()->selectedBody = selection;
-			PyGILState_STATE gstate;
-			gstate = PyGILState_Ensure();
-      boost::python::object main=boost::python::import("__main__");
-      boost::python::object global=main.attr("__dict__");
-				// the try/catch block must be properly nested inside PyGILState_Ensure and PyGILState_Release
-				try{
-          boost::python::eval(string("onBodySelect("+boost::lexical_cast<string>(selection)+")").c_str(),global,global);
-				} catch (boost::python::error_already_set const &) {
-					LOG_DEBUG("unable to call onBodySelect. Not defined?");
-				}
-			PyGILState_Release(gstate);
-			// see https://svn.boost.org/trac/boost/ticket/2781 for exception handling
-	}
-}
-
-// maybe new object will be selected.
-// if so, then set isDynamic of previous selection, to old value
-void GLViewer::endSelection(const QPoint &point){
-	manipulatedClipPlane=-1;
-	QGLViewer::endSelection(point);
-}
-
-string GLViewer::getRealTimeString(){
-	ostringstream oss;
-  boost::posix_time::time_duration t=Omega::instance().getRealTime_duration();
-	unsigned d=t.hours()/24,h=t.hours()%24,m=t.minutes(),s=t.seconds();
-	oss<<"clock ";
-	if(d>0) oss<<d<<"days "<<_W2<<h<<":"<<_W2<<m<<":"<<_W2<<s;
-	else if(h>0) oss<<_W2<<h<<":"<<_W2<<m<<":"<<_W2<<s;
-	else oss<<_W2<<m<<":"<<_W2<<s;
-	return oss.str();
-}
-#undef _W2
-#undef _W3
-
-// cut&paste from QGLViewer::domElement documentation
-QDomElement GLViewer::domElement(const QString& name, QDomDocument& document) const{
-	QDomElement de=document.createElement("grid");
-	string val; if(drawGrid & 1) val+="x"; if(drawGrid & 2)val+="y"; if(drawGrid & 4)val+="z";
-	de.setAttribute("normals",val.c_str());
-	QDomElement de2=document.createElement("timeDisplay"); de2.setAttribute("mask",timeDispMask);
-	QDomElement res=QGLViewer::domElement(name,document);
-	res.appendChild(de);
-	res.appendChild(de2);
-	return res;
-}
-
-// cut&paste from QGLViewer::initFromDomElement documentation
-void GLViewer::initFromDOMElement(const QDomElement& element){
-	QGLViewer::initFromDOMElement(element);
-	QDomElement child=element.firstChild().toElement();
-	while (!child.isNull()){
-		if (child.tagName()=="gridXYZ" && child.hasAttribute("normals")){
-			string val=child.attribute("normals").toLower().toStdString();
-			drawGrid=0;
-			if(val.find("x")!=string::npos) drawGrid+=1; if(val.find("y")!=string::npos)drawGrid+=2; if(val.find("z")!=string::npos)drawGrid+=4;
-		}
-		if(child.tagName()=="timeDisplay" && child.hasAttribute("mask")) timeDispMask=atoi(child.attribute("mask").toLatin1());
-		child = child.nextSibling().toElement();
-	}
-}
-
-boost::posix_time::ptime GLViewer::getLastUserEvent(){return last_user_event;};
-
-#if QGLVIEWER_VERSION>=0x020603
-qreal YadeCamera::zNear() const
-#else
-float YadeCamera::zNear() const
-#endif
-{
-  float z = distanceToSceneCenter() - zClippingCoefficient()*sceneRadius()*(1.f-2*cuttingDistance);
-
-  // Prevents negative or null zNear values.
-  const float zMin = zNearCoefficient() * zClippingCoefficient() * sceneRadius();
-  if (z < zMin)
-/*    switch (type())
-      {
-      case Camera::PERSPECTIVE  :*/ z = zMin; /*break;
-      case Camera::ORTHOGRAPHIC : z = 0.0;  break;
-      }*/
-  return z;
-}
-
-
--- a/pkg/common/Cylinder.cpp
+++ b/pkg/common/Cylinder.cpp
@@ -7,6 +7,7 @@
 	#include<lib/opengl/OpenGLWrapper.hpp>
 #endif
 #include<pkg/common/Aabb.hpp>
+using std::isnan;
 
 Cylinder::~Cylinder(){}
 ChainedCylinder::~ChainedCylinder(){}
--- a/pkg/common/Facet.cpp
+++ b/pkg/common/Facet.cpp
@@ -6,6 +6,7 @@
 *  GNU General Public License v2 or later. See file LICENSE for details. *
 *************************************************************************/
 #include "Facet.hpp"
+using std::isnan; 
 
 CREATE_LOGGER(Facet);
 
--- a/pkg/common/Gl1_NormPhys.cpp
+++ b/pkg/common/Gl1_NormPhys.cpp
@@ -6,7 +6,7 @@
 #include<pkg/common/NormShearPhys.hpp>
 #include<pkg/dem/DemXDofGeom.hpp>
 #include<pkg/dem/Shop.hpp>
-
+using std::isnan; 
 
 	YADE_PLUGIN((Gl1_NormPhys));
 
--- a/pkg/common/InsertionSortCollider.cpp
+++ b/pkg/common/InsertionSortCollider.cpp
@@ -14,6 +14,8 @@
   #include<omp.h>
 #endif
 
+using std::isinf;
+
 YADE_PLUGIN((InsertionSortCollider))
 CREATE_LOGGER(InsertionSortCollider);
 
--- a/pkg/common/MatchMaker.cpp
+++ b/pkg/common/MatchMaker.cpp
@@ -2,6 +2,8 @@
 
 #include <pkg/common/MatchMaker.hpp>
 
+using std::isnan; 
+
 YADE_PLUGIN((MatchMaker));
 
 Real MatchMaker::operator()(int id1, int id2, Real val1, Real val2) const {
--- a/pkg/common/ZECollider.cpp
+++ b/pkg/common/ZECollider.cpp
@@ -12,6 +12,8 @@
 
 #include<boost/static_assert.hpp>
 
+using std::isinf; 
+
 YADE_PLUGIN((ZECollider))
 CREATE_LOGGER(ZECollider);
 
--- a/pkg/dem/ConcretePM.cpp
+++ b/pkg/dem/ConcretePM.cpp
@@ -8,6 +8,7 @@
 #include<pkg/common/Wall.hpp>
 #include<pkg/common/Box.hpp>
 
+using std::isnan;
 
 YADE_PLUGIN((CpmState)(CpmMat)(Ip2_CpmMat_CpmMat_CpmPhys)(Ip2_FrictMat_CpmMat_FrictPhys)(CpmPhys)(Law2_ScGeom_CpmPhys_Cpm)
 	#ifdef YADE_OPENGL
--- a/pkg/dem/GeneralIntegratorInsertionSortCollider.cpp
+++ b/pkg/dem/GeneralIntegratorInsertionSortCollider.cpp
@@ -12,6 +12,8 @@
 #include<vector>
 #include<boost/static_assert.hpp>
 
+using std::isinf; 
+
 YADE_PLUGIN((GeneralIntegratorInsertionSortCollider))
 CREATE_LOGGER(GeneralIntegratorInsertionSortCollider);
 
--- a/pkg/dem/NewtonIntegrator.cpp
+++ b/pkg/dem/NewtonIntegrator.cpp
@@ -10,7 +10,7 @@
 #include<core/Scene.hpp>
 #include<core/Clump.hpp>
 #include<lib/base/Math.hpp>
-
+using std::isnan; 
 
 YADE_PLUGIN((NewtonIntegrator));
 CREATE_LOGGER(NewtonIntegrator);
--- a/pkg/dem/PeriIsoCompressor.cpp
+++ b/pkg/dem/PeriIsoCompressor.cpp
@@ -7,6 +7,7 @@
 #include<pkg/common/NormShearPhys.hpp>
 #include<pkg/dem/DemXDofGeom.hpp>
 #include<lib/pyutil/gil.hpp>
+using std::isnan; 
 
 YADE_PLUGIN((PeriIsoCompressor)(PeriTriaxController)(Peri3dController))
 
--- a/pkg/dem/Polyhedra_Ig2.cpp
+++ b/pkg/dem/Polyhedra_Ig2.cpp
@@ -7,6 +7,7 @@
 #include"Polyhedra_Ig2.hpp"
 #include<pkg/dem/ScGeom.hpp>
 
+using std::isnan; 
 #define _USE_MATH_DEFINES
 
 YADE_PLUGIN(/* self-contained in hpp: */ (Ig2_Polyhedra_Polyhedra_PolyhedraGeom) (Ig2_Wall_Polyhedra_PolyhedraGeom) (Ig2_Facet_Polyhedra_PolyhedraGeom) (Ig2_Sphere_Polyhedra_ScGeom) );
--- a/pkg/dem/ScGeom.cpp
+++ b/pkg/dem/ScGeom.cpp
@@ -7,6 +7,8 @@
 #include<core/Omega.hpp>
 #include<core/Scene.hpp>
 
+using std::isnan;
+
 YADE_PLUGIN((ScGeom)(ScGeom6D)(ChCylGeom6D));
 ScGeom::~ScGeom(){};
 ScGeom6D::~ScGeom6D(){};
--- a/pkg/dem/Shop_02.cpp
+++ b/pkg/dem/Shop_02.cpp
@@ -38,6 +38,8 @@
 
 #include<pkg/dem/Tetra.hpp>
 
+using std::isnan;
+
 #ifdef YADE_OPENGL
 	#include<pkg/common/Gl1_NormPhys.hpp>
 #endif
--- a/pkg/dem/UniaxialStrainer.cpp
+++ b/pkg/dem/UniaxialStrainer.cpp
@@ -5,6 +5,8 @@
 #include<core/InteractionContainer.hpp>
 #include<pkg/common/Aabb.hpp>
 
+using std::isnan;
+
 YADE_PLUGIN((UniaxialStrainer));
 /************************ UniaxialStrainer **********************/
 CREATE_LOGGER(UniaxialStrainer);
--- a/lib/triangulation/FlowBoundingSphere.ipp
+++ b/lib/triangulation/FlowBoundingSphere.ipp
@@ -28,6 +28,7 @@
   // #define GS_OPEN_MP //It should never be defined if Yade is not using openmp
 #endif
 
+using std::isinf; 
 // #define USE_FAST_MATH 1
 
 namespace CGT
--- a/lib/triangulation/PeriodicFlow.hpp
+++ b/lib/triangulation/PeriodicFlow.hpp
@@ -13,6 +13,7 @@
 // #include "Vue3D.h" //FIXME implicit dependencies will look for this class (out of tree) even ifndef XVIEW
 // #endif
 
+using std::isinf; 
 
 namespace CGT{
 
-- 
debian-science-maintainers mailing list
debian-science-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-science-maintainers

Reply via email to