Math 有人知道如何光线跟踪2阶NURBS吗?

Math 有人知道如何光线跟踪2阶NURBS吗?,math,glsl,raytracing,nurbs,Math,Glsl,Raytracing,Nurbs,我从一段时间以来一直在编写GLSL光线跟踪程序,我做了一些改进,但自从有了视图后,我认为光线跟踪曲面比许多三角形要快得多,所以我遇到了NURBS。如果我写下方程(扩展-->仅+、-、*、/、sqrt和square),我看不到任何方法可以获得光线的交点 你们中有人知道如何对2度的NURBS进行光线跟踪吗 This is my equation (no real NURBS equation): given : (A to I are 3d vectors) A B C D E F G H I

我从一段时间以来一直在编写GLSL光线跟踪程序,我做了一些改进,但自从有了视图后,我认为光线跟踪曲面比许多三角形要快得多,所以我遇到了NURBS。如果我写下方程(扩展-->仅+、-、*、/、sqrt和square),我看不到任何方法可以获得光线的交点

你们中有人知道如何对2度的NURBS进行光线跟踪吗

This is my equation (no real NURBS equation):

given :
(A to I are 3d vectors)
A
B
C
D
E
F
G
H
I

a = 2(B-A)
b = 2B-A-C
c = 2(E-D)
d = 2E-D-F
e = 2(H-G)
f =  2H-G-I

(a to f are defined to have the equation a bit shorter later)

o
r
(o and r are 3d vectors again)

searched :
u, v (, t)

to solve :

(A+au-bu²) + ((D+cu-du²)-(A+au+bu²))2v - (2(D+cu-bu²)-(A+au-bu²)-(G+eu-fu²))v² = o+rt
(NURB) = (LINE)

例如,关于这个主题的文献很多。这适用于常规NURBS。不确定是否可以简化二次NURBS

基本思想是将光线视为两个平面的交点Nr=a,Mr=b。对于NM到平面的法向量,a,b常数。如果r=r(u,v)是您的NURB函数。这将为您提供两个包含两个变量的方程来求解

这就是我有点不确定的地方。我认为对于二次NURBS,可以将函数表示为两个二次多项式的商R(u,v)=P(u,v)/Q(u,v),其中P是向量值,Q只是1D多项式。如果是的话,你要解的方程是

NP(u,v)=aQ(u,v) MP(u,v)=bQ(u,v)

这是两个二次变量。您可以使用各种数值方法,如牛顿法或梯度下降法,由于方程是二次方程,因此应相对较快地收敛

你需要分别考虑每个补丁(0<u<1/3,0<v<1/3),以处理函数的分段性质。