diff --git a/src/osgSim/SphereSegment.cpp b/src/osgSim/SphereSegment.cpp index 2a43d23b8..a447fd0ba 100644 --- a/src/osgSim/SphereSegment.cpp +++ b/src/osgSim/SphereSegment.cpp @@ -1294,8 +1294,8 @@ struct TriangleIntersectOperator EdgeSet _edges; osg::Vec3 _centre; - float _radius; - float _azMin, _azMax, _elevMin, _elevMax; + double _radius; + double _azMin, _azMax, _elevMin, _elevMax; unsigned int _numOutside; unsigned int _numInside; @@ -1310,31 +1310,29 @@ struct TriangleIntersectOperator _vertexInIntersectionSet.resize(array.size(), false); _candidateVertexIndices.clear(); - float radius2 = _radius*_radius; + double radius2 = _radius*_radius; for(unsigned int i=0; i radius2) { _regions[i] = 1; } else { - _regions[i] = -1; -#if 0 - float length_xy = sqrtf(vertex.x()*vertex.x() + vertex.y()*vertex.y()); - float elevation = atan2(vertex.z(),length_xy); + double length_xy = sqrtf(vertex.x()*vertex.x() + vertex.y()*vertex.y()); + double elevation = atan2(vertex.z(),length_xy); if (elevation<_elevMin || elevation>_elevMax) { _regions[i] = 1; } else { - float azim = atan2(vertex.x(),vertex.y()); - if (azim<0.0) azim += 2.0f*osg::PI; + double azim = atan2(vertex.x(),vertex.y()); + if (azim<0.0) azim += 2.0*osg::PI; if (azim<_azMin || azim>_azMax) { _regions[i] = 1; @@ -1352,7 +1350,6 @@ struct TriangleIntersectOperator } } -#endif } } @@ -1414,9 +1411,11 @@ struct TriangleIntersectOperator bool verticesRemapped = false; IndexArray::iterator itr = _candidateVertexIndices.begin(); - unsigned int lastUniqueIndex = _candidateVertexIndices[*(itr++)]; + unsigned int lastUniqueIndex = *(itr++); for(; itr != _candidateVertexIndices.end(); ++itr) { + //unsigned int i = *itr; + // osg::notify(osg::NOTICE)<<" i="<get(); edge->_toTraverse.clear(); - osg::notify(osg::NOTICE)<<"edge= "<get(); while (edge) { - osg::notify(osg::NOTICE)<<" vertex "<_intersectionVertex<_intersectionVertex<push_back(edge->_intersectionVertex+_centre/*+osg::Vec3(0.0f,0.0f,200.0f)*/); Edge* newEdge = 0; @@ -1646,7 +1646,7 @@ struct TriangleIntersectOperator edge->removeFromToTraverseList(tri); newEdge->removeFromToTraverseList(tri); - osg::notify(osg::NOTICE)<<" tri="<