【问题标题】:Cone normal vector圆锥法线向量
【发布时间】:2021-02-27 08:52:21
【问题描述】:
我有 cone->p(圆锥的顶点)、cone->orient(轴矢量)、cone->k (半角切线),cone->minm 和 cone->maxm(2 个高度值,用于圆锥帽)。我还有点 intersection 在圆锥上。如何仅使用这些参数在交点点找到圆锥(侧面)法线向量?
【问题讨论】:
标签:
graphics
geometry
raytracing
【解决方案1】:
Сame up with 更简单的方法:
求Dis从交点I到基点P的距离
制作长度的轴方向向量
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)
从AxPr 到I 的向量(垂直于轴):
AxPerp = I - AxProj
向量,与锥面相切,使用向量积:
T = IP x AxPerp
向量,垂直于锥面:
N = T x IP
【解决方案2】:
如果I是圆锥表面的交点并且你知道它的坐标,P是圆锥的顶点,你也知道它的坐标,那么这就足够了:
Normal = (axis x PI) x PI
Normal = Normal / norm(Normal)
其中axis 是与圆锥轴对齐的向量。