垂直于圆锥体的曲面



我正在OpenGL/C++中编写一个程序来光线跟踪圆锥体。对于强度计算,我需要知道曲面法线。给定基准半径、高度和中心坐标,如何计算曲面法线?

我假设您需要找到曲面上给定点的法线。我进一步假设这是一个定向的圆锥体,使得底部朝下(-y轴),圆锥体的点指向上(+y轴)。如果这些条件中的任何一个都不是,我可以根据您的情况编辑我的答案。

让我们把你在表面上的点称为p,中心坐标C,半径r,高度h和法线N。

所有的点和向量都有三个分量(x,y,z),所以我会用"."来指代它们。例如,p.x是p.的x分量

首先,我们需要一个单位向量投影到从C到p的x/z平面上。

V.x=p.x-C.x

V.y=0

V.z=p.z-C.z

这个矢量有正确的方向,但幅度大于1。它还不是一个单位向量,所以我们必须相应地缩放它。

m=sqrt(V.x2+V.z2)

m现在是V的大小,我们将用它来缩放V…

V.x/=m

V.z/=m

找到法线的最终计算是。。。

N.x=V.x*h/r

N.y=r/h

N.z=V.z*h/r

如果你的圆锥体面朝下,并且有一个开口角(α),则以(+z)上的h为基准。你可以在con的顶部选择你的co-system。这意味着圆锥体在尖的部分是平衡的。

在这种情况下,可以导出该曲面的法线分量的通用表达式。

步骤1:

表示法向i球面坐标(e_r,e_θ,e_φ),其中所有分量都是单位向量,θ被定义为方位角。

结果-->e_θ(θ==α,φ)

如果你使用这种形状的其他性质,比如磁化强度M或磁通量。人们可以很容易地转换这个i柱坐标。

步骤2:

θ=-sin(θ)e_z+cos(θ)es(φ),其中θ==α。

相关内容

  • 没有找到相关文章

最新更新