【发布时间】:2014-05-03 21:17:17
【问题描述】:
我正在尝试为我的 OpenCL 实时光线追踪器找到线段和二次贝塞尔三角形之间的交点。
这个问题Detect&find intersection ray vs. cubic bezier triangle 讨论了寻找射线和三次贝塞尔三角形之间的碰撞点,主要建议是尝试细分或张量积贝塞尔补丁。
我在一些地方读到过,在针对二次贝塞尔三角形测试线段时,您最终只需要求解二次方程,但我没有找到任何关于该方程实际是什么的信息,并且我开始怀疑这是不是真的。到目前为止,我试图找到它的尝试也失败了:P
除了使用细分或张量积贝塞尔补丁之外,有谁知道这是否属实或如何解决?
这是二次贝塞尔三角形的方程:
AS^2 + 2*DST + 2*ESU + B*T^2 + 2*FT U + C*U^2
其中 S,T,U 是三角形的参数。您可以将 U 替换为 (1-S-T),因为它们是重心坐标。
A,B,C 是三角形的角,D,E,F 是沿边的控制点。
超级难倒这个!
【问题讨论】:
-
因为这涉及找到一个公式,而不是相同的 C++ 算法,最好在math.stackexchange.com 上询问?
标签: c++ math raytracing bezier