代码之家  ›  专栏  ›  技术社区  ›  infinitezero

将平面问题从三维转换为二维,还是只在三维空间中计算更好?

  •  0
  • infinitezero  · 技术社区  · 8 年前

    我有一个三维空间中的随机定向四面体。我必须对每个面进行计算,这些面在面平面上是完全可解的。 我的问题是: 我应该变换(而不是投影)面,使一个空间坐标保持不变(我可以放下它),还是应该只在3d中执行所有这些操作?

    请在计算速度方面给出答案。

    将要执行的操作包括:
    *面积计算
    *面离散化
    *直线与圆的交点

    编辑: 澄清: 圆段/圆交点和三角形的面积计算。 三角形内圆的面积与三角形重叠多少; 三角形内两个圆的相交面积是多少

    离散化意味着,我把三角形放在一个矩形中,并用大约200个点填充它。然后我找到三角形内的点,并使用它们进行进一步计算。

    2 回复  |  直到 8 年前
        1
  •  0
  •   EvilTak    8 年前

    我会转换为2D,因为:

    1. 2D更易于使用。
    2. 2D中的面积计算甚至不需要平方根。 float triArea = abs(cross(b-a, c-a))
    3. 如果要在3D中工作,则必须在2D中来回变换以进行离散化和相交过程(因为要处理2D对象)
    4. 2D计算要简单得多。

    无论问题是什么,最好将三维平面问题转换为二维问题。一切都变得容易多了。

        2
  •  0
  •   fang    8 年前

    如果您只对少数对象执行几次这些操作,那么在3D中执行操作将更快,因为您需要将对象从3D转换为2D,并将计算结果从2D转换回3D。然而,如果您需要多次执行这些操作,那么与在2D中操作节省的时间相比,这些开销将变得相对较小。