zoukankan      html  css  js  c++  java
  • 得到相交的三角面片的三个顶点坐标

    class PickEvent : public osgGA::GUIEventHandler
    {
    public:
     PickEvent(osg::Geometry* drawable) : _drawable(drawable){}
     ~PickEvent(){}
    public:
     bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
     {
      if (ea.getEventType() == osgGA::GUIEventAdapter::PUSH)
      {
         osgViewer::Viewer* viewer = dynamic_cast<osgViewer::Viewer*>(&aa);
          double x = ea.getX();
          double y = ea.getY();

       osgUtil::LineSegmentIntersector* picker = new osgUtil::LineSegmentIntersector(osgUtil::Intersector::WINDOW, x,y);
       osg::Camera* camera = viewer->getCamera();
       osgUtil::IntersectionVisitor visitor(picker);
       camera->accept(visitor);
       if (picker->containsIntersections())
       {
        osgUtil::LineSegmentIntersector::Intersections::iterator it = picker->getIntersections().begin();
        osg::Geometry* geometry = (*it).drawable->asGeometry();
        osg::Vec3Array* vertes = dynamic_cast<osg::Vec3Array*>( geometry->getVertexArray() );
        osg::Vec3* first = &(vertes->front());
        int i = (*it).indexList[0];
        int j = (*it).indexList[1];
        int k = (*it).indexList[2];

        osg::Vec3 test1 = *(first+i);
        osg::Vec3 test2 = *(first+j);
        osg::Vec3 test3 = *(first+k);
        }
       
       

      }
      return false;
      
     }
    public:
     osg::Transform* _transform;
     osg::Geometry* _drawable;

    };

  • 相关阅读:
    hdu 1695 GCD(欧拉函数+容斥)
    hdu 5072 Coprime (容斥)
    hdu 4135 Co-prime(容斥)
    畅通工程,继续畅通工程,畅通工程再续,多种解法
    Palindrome
    括号匹配(二)(动态规划)
    搬寝室(动态规划)
    Common Subsequence(lcs)
    周赛题解
    亲和串(两种方法妙解)
  • 原文地址:https://www.cnblogs.com/lizhengjin/p/1787388.html
Copyright © 2011-2022 走看看