林在OpenGL / C ++编写一个程序来光线追踪一个cone.For我的强度计算,我需要知道normal.Given基圆半径,高度和中心坐标的面,我怎么计算表面正常吗?
Answer 1:
我假设你需要找到正常的给定的表面上的点的表面。 我还假设这是定向成使得所述基座朝下(-y轴)和圆锥体的点的锥形指向上方(+ Y轴)。 如果任何一个条件都没有的情况下,我可以编辑我的答案,以适应您的情况。
我们呼吁表面P贵点,中心坐标C,半径r,高度h,和正常N.
所有点和向量具有三个分量(x,Y,Z),所以我将把这些通过使用一个“”。 例如Px为P的x分量
首先,我们需要投射到其指向从C到P的X / Z平面上的单位向量
VX = PX-CX
VY = 0
VZ = PZ-锆石
该载体具有正确的方向,但幅度大于一。 它不是一个单位向量还,所以我们必须相应地扩展它。
米= SQRT(Vx的2 + 1/2 2)
男是V的大小,我们将用它来规模V ...
VX / =米
VZ / =米
最后计算找到正常的...
为nx = Vx的* H / R
NY = R / H
NZ = 1/2 * H / R
Answer 2:
如果您在锥面临向下的开口角度(α),底座为H的(+ Z)。 你可以选择在CON顶部您的合作体系。 这意味着锥上的尖尖的部分平衡。
在这种情况下,可以推导出一般表达式为正常komponent到该表面。
步骤1:
表达正常我球面坐标(E_R,e_θ,e_φ),还有所有组件都是单位矢量和θ定义为方位角天使。
结果 - > E_TH(I == A,Z)
如果用这种形状的SOM其它性质的工作,如磁化M或电通量。 人们可以很容易trasform这个我圆柱坐标。
第2步:
E_TH == - 罪(ⅰ)e_z + COS(ⅰ)e_s(z)的存在“==一个。
文章来源: surface normal to a cone