我得到了三角形网格中的三角形列表,如下所示:
__________________
/\ /\ /\
\ / \ /
\ / \ /
____\/______\/____
/\ /\
/ \ / \
/ \ / \
\/______\/______\/
/\ /\ /\
\ / \ /
\ / \ /
____\/______\/____三角形既可以存在,也可以不存在。我需要在三角形周围找到一条路径,如下所示:
========
\\ /\\
\\ / \\
\\ / \\
\\/______\\========
\\ /\ //
\\ / \ //
\\ / \ //
\\/======\//我需要在三角形周围按顺时针顺序显示粗线。我可以使用什么算法来获得它?我已经可以使用不相交集将三角形分类为组,但我不知道如何获得组周围的路径。
发布于 2011-09-04 23:05:44
孤立的三角形周围有三条线。如果在它旁边添加另一个三角形,则会丢失它们合并处的一条线,并从新三角形中获得另外两条线。因此,您可以跟踪显示为彼此相邻放置的一组三角形的边界的一组线,还可以跟踪这些线中的哪些线与其他哪些线相交。
我在这里假设,只有共享一个边界才能连接一个组中的两个三角形,而不是共享一个点。直线在一点相交,如果仅共享一个边界可视为连接两个三角形,则每条外线在其两端仅与另一条外线相连。
如果你跟随(例如深度优先搜索)形成的图形,其中节点是线,线之间的链接显示一条线与另一条线相邻的位置,你将跟踪一圈线-这不会比这更复杂,因为任何一条线最多与两条其他线相交,每条线的每个端点都有一条。
如果您的三角形组中没有孔,那么您将检索单个循环,这是它的外部边界。如果三角形组中有孔,您将检索外边界和每个孔的循环。外部边界必须是包含最大面积的循环,因为它包含所有的孔。
发布于 2011-09-04 22:58:59
只需遍历每个三角形,并对三角形的每一条边检查它是否与另一个三角形接触;如果不是,则将其边设置为粗体。
编辑
如果需要以顺时针方式显示线条绘制的动画,只需计算要绘制的所有边,然后按极轴角度对线条进行排序,并按此顺序显示
https://stackoverflow.com/questions/7299928
复制相似问题