我正在尝试让圆锥体基本体在光线跟踪器中工作。我得到了圆锥体和射线的交点。但是,我不知道如何从定义圆锥体的方式获得圆锥体的法线。我用以下内容定义我的圆锥体:
pos -- The vertex of the cone
size -- Height of the cone
direction -- A unit vector that defines the direction of the cone
angle -- The angle of the cone
(为了了解更多信息,我遵循了线和圆锥体的交点作为如何定义它的参考)。
根据我收集到的信息,我可以使用参数方程中一点的两条切线,并使用它们的叉积获得法线。然而,考虑到我定义圆锥体的方式,以及参数方程的两条切线,我不知道如何获得参数方程。
如果以某种方式有另一种方法来找到法线,这将非常好。
我最终将grad函数应用于圆锥方程(x*a+y*b+z*c)^2-(a^2+b^2+c^2)(x^2+y^2+z^2)cos(t)^2
,其中
- {x,y,z}=3d点(所讨论的法线点)
- {a,b,c}=方向矢量
- t=锥角
然后使用wolframalpha,这最终会给我
- x=(2 a(a x+b y+c z)-2(a ^2+b ^2+c ^2)x cos ^2(t))
- y=(2 b(a x+b y+c z)-2(a ^2+b ^2+c ^2)y cos ^2(t))
- z=(2c(a x+b y+c z)-2(a ^2+b ^2+c ^2)z cos ^2(t))
和normal={x,y,z}