圆锥法向量
Cone normal vector
我有cone->p(圆锥的顶点),cone->orient(轴向量),cone->k(半角正切),cone->minm和cone->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)
从AxPr
到I
的向量(垂直于轴):
AxPerp = I - AxProj
向量,与锥面相切,使用向量积:
T = IP x AxPerp
矢量,垂直于锥面:
N = T x IP
如果I
是圆锥表面的交点,你知道它的坐标,P
是圆锥的顶点,你也知道它的坐标,那么这就足够了:
Normal = (axis x PI) x PI
Normal = Normal / norm(Normal)
其中 axis
是与圆锥轴对齐的矢量。
我有cone->p(圆锥的顶点),cone->orient(轴向量),cone->k(半角正切),cone->minm和cone->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)
从AxPr
到I
的向量(垂直于轴):
AxPerp = I - AxProj
向量,与锥面相切,使用向量积:
T = IP x AxPerp
矢量,垂直于锥面:
N = T x IP
如果I
是圆锥表面的交点,你知道它的坐标,P
是圆锥的顶点,你也知道它的坐标,那么这就足够了:
Normal = (axis x PI) x PI
Normal = Normal / norm(Normal)
其中 axis
是与圆锥轴对齐的矢量。