gpt4 book ai didi

math - 检测并找到相交射线与立方贝塞尔三角形

转载 作者:行者123 更新时间:2023-12-02 02:34:26 24 4
gpt4 key购买 nike

在编写模型编辑器时,除了启用光线追踪外,我还可以考虑一些操作,在这些操作中我想找到关于光线和三角贝塞尔补丁之间交点的非常好的近似值。

如何做到这一点?我知道几种方法,但可能有更好的方法。

确切的用例:我可能想使用一个贝塞尔三角形补丁作为引用表面,用鼠标绘制详细的形状。我可能也想从这样的补丁中找出一个 split 点。

如果有它的 C 源代码,我可能也想看看。甚至可以使用它而不是滚动我自己的代码。

最佳答案

我建议您实现 Triangular Bezier Clipping (PDF)。

但是,另一种可能性是将您的三角形补丁转换为张量积贝塞尔补丁。这样做的好处是对张量积 Beziers 有更多的支持,所以你更有可能找到一些你可以使用的代码。转换很简单:

  • 将您的三角形面片视为一系列 n+1 行控制点(其中 n 是度数)
    • 第一行有1个控制点,每行比最后一行多1个控制点
  • 现在,将每一行视为适当阶数(0 阶到 n 阶)的贝塞尔曲线
  • Degree 将每一行提升到 n 级
    • 现在每行将有 n+1 个控制点,形成一个 n+1 x n+1 控制点网格
  • 这个由 n 乘 n 贝塞尔曲线组成的点网格是与您的三角形相同的表面

如果只是找到交点,这应该就可以了。但是,您的张量积补丁是退化的(一端有重合点),因此您可能会发现在接近退化角时引入了一些数值问题。此外,映射回三角形域可能会使纹理映射之类的事情变得更加棘手。因此,如果您不介意一些实现,我建议您使用更直接的 Triangular Bezier Clipping。

关于math - 检测并找到相交射线与立方贝塞尔三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2457614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com