【发布时间】:2014-12-02 00:44:18
【问题描述】:
我有一个体积网格,它实际上是一个四面体网格。我想计算这个网格的横截面给定一个平面函数,说z = 0。我可以想象四面体的横截面是三角形或四边形。对于第一种情况,三角形,一旦我计算了 3 个交叉点,我就可以得到它;但对于第二种情况,我怎样才能让四边形变成 2 个三角形?我的问题是我无法确定四边形的对角线。
【问题讨论】:
-
在我看来,您需要解决数学问题,而不是编码问题。
我有一个体积网格,它实际上是一个四面体网格。我想计算这个网格的横截面给定一个平面函数,说z = 0。我可以想象四面体的横截面是三角形或四边形。对于第一种情况,三角形,一旦我计算了 3 个交叉点,我就可以得到它;但对于第二种情况,我怎样才能让四边形变成 2 个三角形?我的问题是我无法确定四边形的对角线。
【问题讨论】:
将所有四面体边与平面相交。您将获得 3 或 4 个交叉点。
如果是 3 个点,则为单个三角形。
如果有 4 个点,它们形成一个凸四边形。取任意 3 个点,形成第一个三角形。另一个三角形,如果由第四个点和该点在其右侧的边的两个端点组成。
或者(对于更通用的解决方案),用边缘上入射面的索引标记交点,并重建标签环。
例如:边对于面 AB、CD、DA 和 BC 是通用的;那么这个部分就是 ABCD。
【讨论】:
This answer 概述了一个通用的体平面相交算法。它将按顺序返回交点的顶点,因此很容易确定四边形的对角线。
【讨论】: