圆锥法向量

Cone normal vector

我有cone->p(圆锥的顶点),cone->orient(轴向量),cone->k(半角正切),cone->minmcone->maxm(2高度值,用于锥帽)。我还有圆锥体上的 intersection 点。如何仅使用这些参数在 交点 点找到圆锥体(侧面)法向量?

想出更简单的方法:

求交点I到底P

的距离Dis

制作长度的轴方向向量

D = Dis * sqrt(1+k^2)

并在此距离处在轴上作点

A = P + Normalized(Orient) * D

现在

Normal = I - A


旧答案:
使用向量“IP = I - P”和标量(点)积将点 I(交点)正交投影到锥轴上:

AxProj = P + Orient * dot(IP, Orient) / dot(Orient, Orient) 

AxPrI的向量(垂直于轴):

AxPerp = I - AxProj

向量,与锥面相切,使用向量积:

T = IP x AxPerp

矢量,垂直于锥面:

N = T x IP

如果I是圆锥表面的交点,你知道它的坐标,P是圆锥的顶点,你也知道它的坐标,那么这就足够了:

Normal = (axis x PI) x PI
Normal = Normal / norm(Normal)

其中 axis 是与圆锥轴对齐的矢量。