Open CASCADE学习|曲面上一点的曲率及切平面

曲率(Curvature)是一个几何学的概念,用于描述一个物体的形状在某一点上的弯曲程度。在我们日常生活中,曲率与我们的生活息息相关,如道路的弯道、建筑物的拱形结构、自然界的山脉等等。了解曲率的概念和计算方法,对于工程设计、自然科学研究以及艺术创作等领域具有重要的实际意义。

曲率是曲线和曲面的重要性质,表征了几何的“弯曲程度”。曲率越大,越弯曲;曲率越小,越趋近于直线、平面。直线、平面的曲率为零。

在一定条件下,过曲面Σ上的某一点M的曲线有无数多条,每一条曲线在点M处有一条切线,在一定的条件下这些切线位于同一平面,称这个平面为曲面Σ在点M处的切平面(tangent plane)。点M叫做切点。

#include <Geom_ToroidalSurface.hxx>
#include <BRepBuilderAPI_MakeFace.hxx>
#include <BRepAdaptor_Surface.hxx>
#include <GeomLProp_SLProps.hxx>
#include <Geom_Line.hxx>
#include "Viewer.h"
​
int main(int argc, char* argv[])
{
    gp_Torus aTorus(gp_Ax3(), 8.0, 4.0);
    Geom_ToroidalSurface  torSur(aTorus);
    TopoDS_Face aTourF = BRepBuilderAPI_MakeFace(aTorus);
    gp_Vec DirTanV;
    gp_Vec DirTanU;
    gp_Vec DirZMain;
    gp_Pnt p0;
    torSur.D1(1.0, 1.0, p0, DirTanU, DirTanV);
    DirZMain = DirTanU;
    DirZMain.Cross(DirTanV);
    gp_Pln TPlane(p0, DirZMain); //求切平面
    TopoDS_Face tanF = BRepBuilderAPI_MakeFace(TPlane,-10,10,-10,10);
    //求曲率
    BRepAdaptor_Surface adaptor(aTourF);
    GeomLProp_SLProps aProp(adaptor.Surface().Surface(), 2, 0.000001);
    aProp.SetParameters(1.0, 1.0);
​
    gp_Dir Max; //主曲率方向
    gp_Dir Min; //主曲率方向
    Standard_Real maxCurvature = aProp.MaxCurvature();
    Standard_Real minCurvature = aProp.MinCurvature();
    aProp.CurvatureDirections(Max, Min);
​
    Geom_Line aMaxVec(p0, Max);
    Geom_Line aMinVec(p0, Min);
    //aProp.GaussianCurvature();
    //aProp.MeanCurvature();
    Viewer vout(50, 50, 500, 500);
    vout << aTourF;
    vout << tanF;
    vout.StartMessageLoop();
    return 0;
}
​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值