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

三角形中的线段

  •  1
  • Zinx  · 技术社区  · 16 年前

    如何检查线段是否部分或全部落在三角形内?

    干杯。

    4 回复  |  直到 11 年前
        1
  •  4
  •   Guffa    16 年前

    从直线段的端点获取直线的函数。检查这条线穿过三角形任何边的位置。

    如果线段的任何部分位于三角形内,则该线要么穿过一侧,要么穿过另一侧,要么正好穿过三角形的一侧,并穿过三角形的两个角。

    如果直线穿过三角形,则将直线穿过三角形边(或角)的点与线段的端点进行比较,以查看线段是否是穿过三角形的直线的一部分。

        2
  •  2
  •   Anna    16 年前

    要检查直线是否完全位于三角形内,需要检查直线段的两个端点是否位于三角形内。 检查一个点是否在三角形内可以使用所描述的技术 here .

    由于检查三角形的端点可能还不够,因此检查三角形的一部分是否与三角形相交要复杂一些。部分交叉有两种可能的情况:

    1. 一个端点在三角形的内部,另一个则不是
    2. 两个端点都在三角形的外部,但段至少穿过三角形的一个边。

    检查1。可以通过 this 技术。检查2。可以通过检查两个段是否相交的算法来完成。其中一个例子就是 here .

        3
  •  1
  •   glebm    16 年前

    如果段的一个点位于三角形的内部,则部分位于三角形的内部,如果两个点都位于三角形的内部,则完全位于三角形的内部

    当且仅当角度aob、boc、coa之和等于360度时,点o在三角形内。

    干杯,

    格莱布

        4
  •  -1
  •   Rajendra Uppal    14 年前

    更好的算法如下:

    为什么不这样做:

    • 如果线段的两个端点都位于三角形内或三角形上,则线段必须位于三角形内或三角形上。

    要检查点是否位于三角形内:

    • 站在这一点上,观察三角形的每个顶点
    • 如果按顺时针/逆时针方向查看每个顶点,则表示在内部或外部。