查看: 1620|回复: 3

线段求交的代码是这样写的吗?

[复制链接]

该用户从未签到

发表于 2009-7-8 23:37:09 | 显示全部楼层 |阅读模式
Vec3 start(x,y,10000.F);
Vec3 end(x,y,-10000.F);

LineSegmentIntersector inter(start,end);
ret=inter.enter(gnode);
Vec3 resultCoord=inter.getFirstIntersection().getWorldIntersectPoint();

目的是计算gnode这个节点的几何体在xOy平面上的投影上(x,y)处对应点的z值.假定该处只有一个点和(x,y)对应.

该用户从未签到

 楼主| 发表于 2009-7-8 23:52:33 | 显示全部楼层
还有一点补充:
这个gnode节点并没有被现实出来
就是没有和Viewer关联

该用户从未签到

 楼主| 发表于 2009-7-9 00:49:14 | 显示全部楼层
bool ret=false;
        Vec3 start(x,y,10000.F);
        Vec3 end(x,y,-10000.F);

        ref_ptr<LineSegmentIntersector> inter=new LineSegmentIntersector(start,end);
        IntersectionVisitor v(inter.get());
        gnode.accept(v);
        unsigned int size=inter->getIntersections().size();
        if(size>0){
                Vec3 resultCoord=inter.get()->getIntersections().begin()->getWorldIntersectPoint();
        coord[0]=resultCoord.x();
        coord[1]=resultCoord.y();
        coord[2]=resultCoord.z();
        ret=true;
        }
        return ret;

改成这样也不行啊

该用户从未签到

发表于 2009-7-9 08:31:25 | 显示全部楼层
3楼的写法基本正确,没有得到交点说明没有相交
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表