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

检测和查找相交光线与三次贝塞尔三角形

  •  3
  • Cheery  · 技术社区  · 16 年前

    在编写模型编辑器时,除了启用光线跟踪之外,我还可以考虑几个操作,在这些操作中,我希望找到光线和三角形bezier面片之间交点的非常好的近似值。

    怎么做?我知道两种方法,但可能有更好的方法。

    如果有C源代码的话,我可能也想看看。甚至可以用它来代替我自己的代码。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Naaff    16 年前

    我建议你实施 Triangular Bezier Clipping (PDF格式)。

    然而,另一种可能是将三角面片转换为张量积贝塞尔面片。这样做的好处是对张量积Beziers有更多的支持,因此您更有可能找到一些可以使用的代码。转换很简单:

      • 第一行有一个控制点,每行比最后一行多出一个控制点
    • 度将每行升高到n度
      • 每行现在将有n+1个控制点,形成n+1乘n+1的控制点网格
    • 这个点网格,作为一个n乘n的贝塞尔面片,是一个与三角形相同的曲面

        2
  •  0
  •   Ahmed Abdelkader    16 年前

    我不熟悉三角bezier面片,但是如果它总是可以包含在一个三角形中,那么,如果光线与三角形相交,它也必须与其中的曲线相交。

    推荐文章