曲线在某点处的切向量一点处的法向量

如果有这样的场景:已知一條B样条曲线已知曲线上一个点,求过这个点的曲线的切线或法线在OpenCasCade中如何解决?

实际上上述求解是不存在的,或者说直接获嘚过这个点的曲线的法向或切向量的方法是没有的原因之一可能是安全性考虑,比如所给点不在曲线上虽然用户可能说我这个点就在曲线上,但是参数化的曲线可不管你怎么说
在OpenCasCade中,要获得一条参数曲线的某个位置的法向或切向量只能通过这个位置的参数u来实现。既然这样那有没有什么办法可以先获得这个点的参数u,然后再将这个参数u作为自变量传递给曲线进行计算这个位置的法向或且想

OpenCasCade中有内置的功能是将某个点投射到曲线上,相关的类为

实际上是找这个点到这条曲线上哪个点能获得最小距离或最大距离能够获得投射点的坐标和其他变量,包括这个点的参数u通过这个u就可以重新计算这个点的坐标(算是一种修正吧)和这个点的切向量。

下图所示为一条分段Bezier曲线白色点为各个控制点,需要在第三个控制点上画一条曲线的切线虽然这个控制点一定在曲线上,但是参数型的曲線并不能确定某个点是否一定在曲线上或者有多大的误差此时可以将该点投影到曲线上,获得曲线上最近的点和最远的点如果添加一條判断语句,比如投影点与原点距离小于某个极小值就可筛选出该点,同时可以获得该点对应的参数u示意图如下所示:

}

首先说明所说的梯度与曲线的切向量垂直,即梯度方向是法向量方向:

但是这里需要注意的这里的法向量方向是对等高线来说的,而非对曲面曲面法向量需要添加對u求偏导。因为梯度方向是降维的都是对自变量求导的。

说道这里可能还不好理解,用爬山来举例

爬山是最快的方向就是直观上最陡的方向,我们看着是斜向上的而爬山时梯度方向是水平的【延伸到高维就不能说水平了】,即把那个斜向上的方向投影到水平面上的方向也就是等高线的法向量方向了。

总结讨论梯度与切向量、法向量的关系时,切法向量均是对曲线来说的而不是整个曲面的法向量。因为梯度的维度比曲线的维度低这是需要记住的。

}

我要回帖

更多关于 曲线在某点处的切向量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信