我正试图计算出最上面最相交的任意几个平面,没有joy!我正在使用actionscript,但只需要找到一个我可以实现的算法。
问题:
这是一张用两个三角形来阐明我的意思的图片:

然而,当我们允许两个以上的三角形,我得到尴尬的线交叉。
发布于 2011-07-30 14:01:44
我对你的问题很感兴趣,所以我描述了算法并在C++中实现了它(我不知道它有C++那么好)。该算法的主要思想是在增加新三角形的同时,对上表面进行迭代重新计算。
在三角形截取后,它们可以将它们的形状转换为具有自定义顶点数的多边形。因此,每个三角形最初被转换成平面多边形。每个多边形实例包括其平面方程和一组多边形面。每个面作为一个数据结构,包括多边形的一个顶点和垂直边界平面方程,该顶点与多边形顶点序列中的下一个顶点相交。(因此,集合中面孔的顺序很重要。)
让我们把上面的表面看作一个多边形集。当新多边形正在添加时,我们应该迭代地重新计算所有表面多边形的面。人脸重新计算算法包括以下步骤:
不是为了淹没在这个页面上,而是将代码放入巴斯丁中。
发布于 2011-10-01 20:21:58
您正在三个垂直“轴”之间构造感兴趣的表面。地面下面有一个基座。把它绑在上面,使问题包含在一个三角棱镜中。
在你的表面上的体积是一个http://en.wikipedia.org/wiki/Convex_hull形成的交叉平面(即:帽,三边,和三角形的交叉口)。关于凸壳有很多理论和规范。
我不知道ActionScript,但是在“凸壳相交平面”上进行快速的互联网搜索,让我找到了这个代码,它(意图)解决了您的问题:
http://nauful.com/pages/convexhull.html
希望这能帮上忙,格伦
发布于 2011-07-30 15:25:47
也许效率不高,但这里有个主意。
计算每两个独立三角形之间的相交线。
然后将三角形边添加到这个集合中,并计算其中每两条线之间的交点。
找出这些点中哪些是从顶部看不见的,并将它们从集合中移除。这可以使用光线投射和寻找交叉,但可能有更有效的方法。
最后得到一组点,这些点是最上面网格的顶点。
https://stackoverflow.com/questions/6880521
复制相似问题