OpenCasCade(六) 曲线曲面

1.1     B样条曲线

(1)    GeomAPI_Interpolate:插值法生成BSpline曲线

例1:用插值法生成B样条曲线

OCGeomAPI_Interpolate PtB =

new OCGeomAPI_Interpolate(HArray, false, OCPrecision.Approximation());

PtB.Perform();

OCGeom_BSplineCurve curve = PtB.Curve();

对于插值生成曲线来说,不仅能够指定通过的点,还能够指定首尾切矢,或每个点处的导矢限制。具体用法可以参考OCGeomAPI_Interpolate类中的load方法。

 

(2)    public class OCGeomAPI_Interpolate : IDisposable

public void Load(OCTColgp_Array1OfVec Tangents,

OCTColStd_HArray1OfBoolean TangentFlags, bool Scale); 

当曲线受切矢控制时,要用此函数。

Tangents:曲线上点的切矢矢量

TangentFlags:曲线上点的是否受切矢控制

Scale:false曲线受切矢的大小影响,true切矢为单位切矢,在本系统中采用单位切矢

当点上没有设置切矢值时,调用此函数会报错。

 

(3)    public class OCTColgp_Array1OfVec : IDisposable

public void SetValue(int Index, OCgp_Vec Value);

设置曲线上点的切矢值

Index:点在曲线数组的索引,从1开始。

Value:切矢值,可以定义三维空间的切矢,如果曲线在YZ平面时,X为0即可,如果曲线在自定义的平面上,切矢值需要计算。

此函数要与类OCTColStd_HArray1OfBoolean中的public void SetValue(int Index, bool Value)一起使用。

public void SetValue(int Index, bool Value)

曲线上的点是否受切矢控制

Index:点在曲线数组的索引,从1开始

Value:是否受切矢控制

 

(4)    用法:

OCTColgp_Array1OfVec tv = new OCTColgp_Array1OfVec(1, 3);

OCTColStd_HArray1OfBoolean b = new OCTColStd_HArray1OfBoolean(1, 3);

b.SetValue(2, true);

tv.SetValue(2, new OCgp_Vec(Math.Sin(Math.PI / 2 - Math.PI /4), Math.Cos(Math.PI / 2 - Math.PI /4), 0));

PtB.Load(tv, b, true);

 

1.2     B样条曲面

(1)    OCGeomFill_ConstrainedFilling:边界法生成B样条曲面

例1:用边界法生成B样条曲面

OCGeomAdaptor_HCurve SPL1Adaptor = new OCGeomAdaptor_HCurve(cur1.curve);

OCGeomFill_SimpleBound B1 = new OCGeomFill_SimpleBound(

SPL1Adaptor, OCPrecision.Approximation(), OCPrecision.Angular());

OCGeomAdaptor_HCurve SPL2Adaptor = new OCGeomAdaptor_HCurve(cur2.curve);

OCGeomFill_SimpleBound B2 = new OCGeomFill_SimpleBound(

SPL2Adaptor, OCPrecision.Approximation(), OCPrecision.Angular());

     OCGeomAdaptor_HCurve SPL3Adaptor = new OCGeomAdaptor_HCurve(cur3.curve);

OCGeomFill_SimpleBound B3 = new OCGeomFill_SimpleBound(

SPL3Adaptor, OCPrecision.Approximation(), OCPrecision.Angular());

     OCGeomAdaptor_HCurve SPL4Adaptor = new OCGeomAdaptor_HCurve(cur4.curve);

OCGeomFill_SimpleBound B4 = new OCGeomFill_SimpleBound(

SPL4Adaptor, OCPrecision.Approximation(), OCPrecision.Angular());

int MaxDeg = 5;

int MaxSeg = 2;

OCGeomFill_ConstrainedFilling aConstrainedFilling =

new OCGeomFill_ConstrainedFilling(MaxDeg, MaxSeg);

aConstrainedFilling.Init(B1, B2, B3, B4, false);

OCGeom_BSplineSurface aBSplineSurface = aConstrainedFilling.Surface();

对于用边界法生成的B样条曲面,必须保证边界曲线的条数只能为3条或4条,且曲线围成的区域封闭。

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值