Hi Robert, As you suggested, I am ordering the sequence of intersection points with extra code after intersecting operation. But, I am wondering which operation of my program affects the algorithm stitching all the triangle intersection segments together and generate different order of intersection points. I just multiply the coordinates of each points with 3. I will check my program and data file again. Thank you.
Tianyun On Mon, Oct 21, 2013 at 4:07 PM, Robert Osfield <[email protected]>wrote: > Hi Tianyun, > > The sequence that the points are joined up in will depend upon the > algorithm which stitches all the triangle intersection segments together, > it's objective is to stick things together not sort things into an order > governed by the user - it's a complicated enough task that adding extra > constraints wouldn't be helpful. If one did want to impose an order onto > the file polylines generated then you are best doing this as post process. > The alternatively is to simply write code that isn't sensitive to the > ordering of the polylines. > > Robert. > > > On 21 October 2013 08:45, Tianyun Su <[email protected]> wrote: > >> Hi, >> I am trying to get the intersection points between an intersection plane and >> a terrain using osgUtil::PlaneIntersector。 >> The code is listed as following: >> >> osg::Plane planeLeft( osg::Vec3(1,0,0), osg::Vec3(0+1,0,0) );//define an >> intersetion plane >> osg::Polytope polytopeLeft;//define the range of planeLeft >> polytopeLeft.add( osg::Plane(osg::Vec3(0,1,0), osg::Vec3(0,0,0)) ); >> polytopeLeft.add( osg::Plane(osg::Vec3(0,-1,0), >> osg::Vec3(0,GlobalVariable::g_maxDepth,0)) ); >> osg::ref_ptr<osgUtil::PlaneIntersector> insectorLeft = new >> osgUtil::PlaneIntersector(planeLeft, polytopeLeft); >> osgUtil::IntersectionVisitor ivleft(insectorLeft); >> geodeTerrain->accept(ivleft); >> if (insectorLeft->containsIntersections() ) >> { >> //output the intersection points >> fstream file; >> file.open("Terrain.txt",ios::out); >> >> osgUtil::PlaneIntersector::Intersections& intersections = >> insectorLeft->getIntersections(); >> osgUtil::PlaneIntersector::Intersections::iterator itr = >> intersections.begin(); >> for ( unsigned int i=0; i<(*itr).polyline.size(); ++i ) >> { >> file<<(*itr).polyline[i].x()<<","<<(*itr).polyline[i].y()<<","<<(*itr).polyline[i].z()<<std::endl; >> } >> file.close(); >> } >> I can get the intersection points successfully. But, when I change the >> terrain value just multiplying it with 3 and intersect with the same plane >> again, the sequence of output intersection points is reversed. So I wonder >> how can I control the sequence of the intersection points. >> >> Thank you! >> >> Cheers, >> Tianyun >> >> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> >> > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

