表面垂直于锥形

时间:2012-12-09 23:11:01

标签: graphics

我正在用OpenGL / C ++编写一个程序来对光线进行光线跟踪。对于我的强度计算,我需要知道表面法线。给出基本半径,高度和中心坐标,我该如何计算表面法线?

2 个答案:

答案 0 :(得分:4)

我认为你需要在表面上给出一个点找到表面的法线。我进一步假设这是一个锥形方向,使得底座朝下(-y轴),锥形点朝上(+ y轴)。如果不是这些条件中的任何一个,我可以编辑我的答案以适合您的情况。

让我们在表面P,中心坐标C,半径r,高度h和法线N上调用您的点。

所有点和向量都有三个组成部分(x,y,z),所以我将使用“。”来引用它们。例如,P.x是P的x分量。

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

V.X = P.x-C.x

V.Y = 0

V.Z = P.z-C.z

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

M = SQRT(V.X 2 + V.Z 2

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

答案 1 :(得分:0)

如果你的Cone面朝下并且有一个开口天使(α),则基于h on(+ z)。您可以在con顶部选择您的联合系统。这意味着锥体在尖头部分是平衡的。

在这种情况下,您可以导出该表面的正常komponent的一般表达式。

第1步:

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

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

如果你使用这种形状的其他属性,如磁化M或电通量。人们可以很容易地改变这个圆柱坐标。

第2步:

e_θ== - sin(θ)e_z + cos(θ)e_s(φ)其中θ==α。