查看: 1399|回复: 3

请教osgDelaunay问题

[复制链接]

该用户从未签到

发表于 2011-1-11 20:27:42 | 显示全部楼层 |阅读模式
本帖最后由 ccy_ccy2001 于 2011-1-11 20:36 编辑

我想通过点击三个点确定一条路,先点击三个点,将这个三个点的坐标存到
  1. osg::ref_ptr<osg::Vec3Array> coords
复制代码
然后
  1. LinearConstraint *dc3 =new LinearConstraint;
  2. dc3->setVertices(coords.get(),10);
复制代码
计算出以10为路宽的道路的6个点, road.jpg
即图中的a1,a2,b1,b2,c1,c2,然后
  1. //添加约束
  2. dt->addInputConstraint(dc3);
复制代码
第一个问题:请问约束点是哪些呢?
之后又有这么三句,
  1. dt->setInputPointArray(coords.get());
  2. osg::Vec3Array *norms=new osg::Vec3Array;
  3. dt->setOutputNormalArray(norms);
复制代码
第二个问题:请问是做什么的呢?
然后
  1. dt->triangulate();
复制代码
第三个问题:请问这个生成出来的三角网格是哪些区域?

  1. ……
  2. dt->removeInternalTriangles(dc3);
复制代码
第四个问题:请问这里移除的三角又是那个区域?
一共有4个问题,请高手帮我解答一下吧,谢谢!

该用户从未签到

 楼主| 发表于 2011-1-14 10:05:08 | 显示全部楼层
请高手指点一下吧,谢谢!

该用户从未签到

发表于 2011-1-14 13:04:55 | 显示全部楼层
我个人对这个问题没有过研究

该用户从未签到

发表于 2011-1-14 13:52:06 | 显示全部楼层
前些天刚好看了一下Delaunay的功能(可以搜索一下我前几天的贴子),你的问题我是这样认为的:

1.OSG中Delaunay三角化是以离散的点集为基础构建三角形,因各点之间没有关系,所以只适用于凸多边形区域的三角化.
2.对于非凸多边形区域或多边形内有孔的区域就要采用加约束的方式.约束点就是多边形内孔的边上的点或多边形上的凹陷部分(这需通过一定算法找出来).在三角化后,可通过dt->removeInternalTriangles(dc)除去约束环内的三角形.

你的4个问题应能从以上得到解释.另外提醒一句,个人感觉osg的Delaunay功能问题很多,不是太好.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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