青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

OpenCASCADE Interpolations and Approximations

Posted on 2016-03-17 23:10 eryar 閱讀(2783) 評論(1)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenCASCADE Interpolations and Approximations

eryar@163.com

Abstract. In modeling, it is often required to approximate or interpolate points to curves and surfaces. In interpolation, the process is complete when the curve or surface passes through all the points; in approximation, when it is as close to these points as possible. The paper is the translation of the OpenCASCADE Modeling Data user guide.

Key Words. Interpolation, Approximation, Fitting

1.Introduction

在幾何造型中,經常會需要根據點去擬合(插值Interpolation或逼近Approximation)曲線曲面。插值要求擬合所得的曲線或曲面必須通過所有擬合點;而逼近要求擬合所得曲線或曲面盡可能地靠近全部擬合點。OpenCASCADE中提供了曲線曲面擬合的功能有:

v 對二維點進行二維B樣條或Bezier曲線插值;

v 對二維點進行二維B樣條或Bezier曲線逼近;

v 對三維點進行三維B樣條或Bezier曲線或B樣條曲面插值;

v 對三維點進行三維B樣條或Bezier曲線或B樣條曲面逼近;

程序中使用擬合功能有兩種方式:

v 使用高級功能:提供簡單的方法調用來獲得擬合結果;

v 使用低級功能:專為想對擬合有更多控制的用戶設計;

插值和逼近也是數值分析或計算方法中的主要內容。用B樣條作為插值或逼近函數是數值分析中的一個具體方法。通過對OpenCASCADE中插值和逼近算法的學習,加深對一些算法,如最小二乘法,多元函數求極值等數學知識的理解。

本文主要是對OpenCASCADE的文檔Modeling Data 中的插值和逼近部分進行翻譯,并給出了使用其低級功能具體的代碼示例。

2.Analysis of a set of points

包GProp中的類PEquation提供了對點集、點云數據進行分析的功能,可以用來驗證在給定的精度范圍內是否重合、共線或共面等,如果檢測結果是,那么算法將計算出這些點的重合點、線或面。如果檢測結果不是,則算法會計算出點集或點云的包圍盒。

3.Basic Interpolation and Approximation

包Geom2dAPI和GeomAPI提供了擬合(逼近和插值)簡單的方法。

v 2D Interpolation: 類Geom2dAPI_Interpolate可以用于生成一條通過一系列點的二維B樣條曲線。如果需要,還可以設置點相應的切矢及參數來對插值曲線做進一步的約束。

v 3D Interpolation: 類GeomAPI_Interpolate可以用于生成一條通過一系列點的三維B樣條曲線。如果需要,還可以設置點相應的切矢及參數來對插值曲線做進一步的約束。因為是高級功能,所以需要很少的代碼就可以得到插值曲線,用法如下:

GeomAPI_Interpolate Interp(Points);

Handle_Geom_BSplineCurve C = Interp.Curve()

v 2D Approximation: 類Geom2dAPI_PointsToBSpline可以用于生成逼近一系列點的二維B樣條曲線。你需要定義曲線次數范圍,連續性和容差。容差值只是用來檢查逼近點之間是不是有重合點,或者切矢是否太小。逼近曲線將會是C2連續或2次曲線,當有切矢約束時,將會得到C1連續的曲線。

wps_clip_image-12820

v 3D Approximation:類GeomAPI_PointsToBSpline可以用于生成逼近一系列點的三維B樣條曲線。你需要定義曲線次數范圍,連續性和容差。容差值只是用來檢查逼近點之間是不是有重合點,或者切矢是否太小。逼近曲線將會是C2連續或2次曲線,當有切矢約束時,將會得到C1連續的曲線。類的用法如下:

GeomAPI_PointsToBSpline Approx(Points, DegMin, DegMax, Continutity, Tol);

Handle_Geom_BSplineCurve K = Approx.Curve()

v Surface Approximation:類GeomAPI_PointsToBSplineSurface可以用于根據點集擬合B樣條曲面。

4.Advanced Approximation

包AppDef和AppParCurves提供了低級的功能,允許對擬合有更多地控制。低級功能提供了如下函數接口API:

v 定義擬合切矢的規則,這些切矢有原點和極值;

v 根據各自參數平行地擬合一系列曲線;

v 光滑擬合:生成光順(faired curve)的曲線。

注:包AppDef和AppParCurves中通過宏定義實現了一種類似多態的功能,但是程序調試不方便,導致一些類名沒有看到聲明文件,對程序的理解造成一些不便。

4.1 Approximation by multiple point constraints

包AppDef中提供了低級工具用于對帶約束的點集進行Bezier或B樣條曲線擬合。其中的功能有:

v 定義一組約束點,使用類AppDef_MultiPointConstraint;

v 定義一組約束線,使用類AppDef_MultiLine;

v 擬合Bezier曲線,使用類AppDef_Compute;

v 擬合B樣條曲線,使用類AppDef_BSplineCompute;

v 定義變分標準Variational Criteria;

注:在類AppDef_Variational中可以看到Variational Optimization變分優化。對于工科出來的人來說,這些概念還真是有些陌生,還是學數學的人厲害!

其中類AppDef_MultiLine的用法也有點特別,通過文檔中的圖來理解下:

wps_clip_image-28658

其中:Pi, Qi, Ri, ..., Si可以是二維點或三維點;

按組來定義,其中Pn, Qn, Rn, ..., Sn都是在類AppDef_MultiPointConstraint中定義;

P1, P2, .., Pn或Q, R,..., S的點系列用來擬合。

類AppDef_Compute用Bezier曲線來擬合點;

類AppDef_BSplineCompute用B樣條曲線來擬合點;

注:需要仔細理解AppDef_MultiPointConstraint和AppDef_MultiLine的用法。

4.2  Example: How to approximate a curve with low-level tools

使用低級功能的過程可分為如下幾步:

v 定義擬合點;

v 根據擬合點創建MultiLine;

v 使用AppDef_Compute或AppDef_BSplineCompute來擬合曲線;

下面給出使用低級功能的代碼示例:

 

/*
*    Copyright (c) 2016 Shing Liu All Rights Reserved.
*
*           File : main.cpp
*         Author : Shing Liu(eryar@163.com)
*           Date : 2016-03-17 21:00
*        Version : OpenCASCADE6.9.0
*
*    Description : test the low-level tools of approximation.
*/

#define WNT

#include 
<TColgp_Array1OfPnt.hxx>

#include 
<AppDef_MultiPointConstraint.hxx>
#include 
<AppDef_MultiLine.hxx>
#include 
<AppDef_Compute.hxx>
#include 
<AppDef_BSplineCompute.hxx>

#pragma comment(lib, 
"TKernel.lib")
#pragma comment(lib, 
"TKMath.lib")
#pragma comment(lib, 
"TKGeomBase.lib")


void testBezierApprox()
{
    TColgp_Array1OfPnt aPoints(
13);
    aPoints.SetValue(
1, gp_Pnt(0.00.00.0));
    aPoints.SetValue(
2, gp_Pnt(1.00.00.0));
    aPoints.SetValue(
3, gp_Pnt(1.01.00.0));

    AppDef_MultiLine aMultiLine(aPoints);

    AppDef_Compute aBezierApprox(aMultiLine);
    aBezierApprox.Value().Dump(std::cout);

}

void testBSplineApprox()
{
    AppDef_MultiLine aMultiLine(
3);

    AppDef_MultiPointConstraint aMPC1(
20);
    AppDef_MultiPointConstraint aMPC2(
20);
    AppDef_MultiPointConstraint aMPC3(
20);

    aMPC1.SetPoint(
1, gp_Pnt(0.00.00.0));
    aMPC1.SetPoint(
2, gp_Pnt(0.02.00.0));

    aMPC2.SetPoint(
1, gp_Pnt(1.00.00.0));
    aMPC2.SetPoint(
2, gp_Pnt(1.02.00.0));

    aMPC3.SetPoint(
1, gp_Pnt(1.01.00.0));
    aMPC3.SetPoint(
2, gp_Pnt(1.03.01.0));

    aMultiLine.SetValue(
1, aMPC1);
    aMultiLine.SetValue(
2, aMPC2);
    aMultiLine.SetValue(
3, aMPC3);

    AppDef_BSplineCompute aBSplineApprox(aMultiLine);
    aBSplineApprox.Value().Dump(std::cout);
}

int main(int argc, char* argv[])
{
    testBezierApprox();

    testBSplineApprox();

    
return 0;
}

程序運行結果如下圖所示:

wps_clip_image-1016

5.Conclusion

關于點的插值和逼近是《數據逼近》或《數值分析》或《計算方法》書中關注的內容。從文檔中可以看到包AppDef中的一些關鍵字:Gradient, BFGS, LeastSquare等,根據這些關鍵字可以看出OpenCASCADE中逼近使用的算法了。

wps_clip_image-27642

通過使用AppDef_MultiPointConstraint及AppDef_MultiLine等低級接口,來理解擬合數據點輸入及擬合結果的輸出。進而去學習BFGS、LeastSquare等數學理論工具在實際中的應用。對于多元函數,梯度及BFGS等概念還好接受,對于變分法優化之類理論已經超出了工科數學的范圍,不過結合實際去學習這些概念應該會更有效率。

Feedback

# re: OpenCASCADE Interpolations and Approximations  回復  更多評論   

2016-04-11 21:18 by zhaiht
高手:Opencascade有大量的內存泄露怎么處理,好抓狂啊
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产区亚洲区欧美区| 欧美影院成年免费版| 欧美一级网站| 在线观看久久av| 欧美亚洲日本网站| 欧美一区二区三区在线看 | 亚洲一级片在线看| 亚洲精品免费电影| 欧美久久99| 亚洲黄色在线看| 亚洲精品在线免费| 欧美~级网站不卡| 久久久亚洲人| 性欧美暴力猛交另类hd| 国产日韩亚洲欧美综合| 国产精品国产三级国产专播品爱网 | 91久久精品美女高潮| 一区二区三区久久| 国产日产精品一区二区三区四区的观看方式 | 亚洲精品在线视频| 亚洲欧洲精品一区二区三区| 亚洲成人自拍视频| 亚洲国产91精品在线观看| 免费成人你懂的| 亚洲国内自拍| 亚洲国产毛片完整版| 日韩视频免费看| 亚洲一区www| 欧美一级二区| 久久精品免费| 亚洲第一狼人社区| 欧美主播一区二区三区| 久久人91精品久久久久久不卡| 亚洲国产精品成人一区二区| 亚洲一区制服诱惑| 性欧美暴力猛交69hd| 蜜月aⅴ免费一区二区三区| 亚洲图色在线| 亚洲男人影院| 亚洲国产一区二区三区青草影视| 亚洲人体1000| 韩国三级电影久久久久久| 在线精品国产成人综合| 国产一区二区三区电影在线观看| 欧美精品成人一区二区在线观看| 欧美精品在线免费| 国产在线高清精品| 亚洲视频导航| 亚洲男人av电影| 亚洲专区国产精品| 亚洲精品专区| 国语自产精品视频在线看一大j8| 欧美激情黄色片| 国产三级欧美三级日产三级99| 欧美日韩国产亚洲一区| 久久人人97超碰精品888| 一本一道久久综合狠狠老精东影业| 欧美成人精品h版在线观看| 午夜精品久久久久久久男人的天堂 | 亚洲女女女同性video| 你懂的亚洲视频| 久久久久九九九| 欧美高清在线视频观看不卡| 香蕉亚洲视频| 99国产精品99久久久久久粉嫩 | 欧美精选一区| 亚洲图片欧美午夜| 欧美大片在线看免费观看| 欧美日韩国产一中文字不卡| 欧美调教视频| 亚洲一区网站| 久久亚洲综合网| 久久精品国产欧美亚洲人人爽| 国产一区二区三区久久| 久久女同互慰一区二区三区| 久久久久久久久久久久久9999| 欧美成人一二三| 亚洲看片一区| 99精品久久久| 国产精品亚洲网站| 最新国产成人在线观看| 亚洲欧美清纯在线制服| 亚洲亚洲精品在线观看 | 在线欧美小视频| 亚洲网站在线观看| 亚洲一区二区三区免费观看| 国产一级一区二区| 亚洲一区二区精品| 亚洲欧美国产毛片在线| **网站欧美大片在线观看| 亚洲综合电影一区二区三区| 亚洲欧美日韩国产中文在线| 欧美久色视频| 欧美一区二区三区男人的天堂| 欧美激情一区二区三级高清视频| 久久综合一区| 亚洲视频在线观看网站| 欧美成人三级在线| 午夜国产精品视频免费体验区| 女仆av观看一区| 99国产精品久久久久久久成人热| 一本不卡影院| 欧美精品大片| 久久爱另类一区二区小说| 欧美成人视屏| 亚洲国产精品成人一区二区| 亚洲精品资源| 激情欧美一区二区三区| 一本久久a久久精品亚洲| 欧美福利视频在线观看| 国产一区日韩欧美| 99精品视频一区二区三区| 亚洲第一成人在线| 亚洲欧美日韩精品久久久| 亚洲精品孕妇| 久久精品国产欧美激情| 性色av一区二区三区| 欧美精品久久天天躁| 日韩视频不卡| 久久久九九九九| 一区二区三区高清在线| 久久资源在线| 午夜精品理论片| 欧美日韩999| 亚洲大片免费看| 久久久久欧美精品| 亚洲欧美日韩另类精品一区二区三区| 亚洲国产精品久久久久秋霞不卡| 国产精品乱码妇女bbbb| 亚洲精品一区中文| 亚洲精品小视频| 久久只精品国产| 亚洲精品久久久一区二区三区| 久久久久久久网| 久久国产欧美日韩精品| 韩国在线一区| 美日韩精品免费| 国产精品久久久久9999高清| 小嫩嫩精品导航| 欧美丝袜第一区| 日韩一区二区精品| 国产精品入口麻豆原神| 亚洲人成网站影音先锋播放| 欧美日本国产精品| 亚洲国产日韩欧美综合久久| 日韩系列欧美系列| 欧美sm视频| 91久久国产综合久久| 国产精品成人av性教育| 性做久久久久久久久| 欧美在线你懂的| 久久久久久亚洲精品不卡4k岛国| 国产亚洲一级高清| 亚洲电影欧美电影有声小说| 亚洲人成7777| 亚洲精品乱码久久久久久| 欧美成人免费va影院高清| 亚洲一级网站| 欧美影院久久久| 精品69视频一区二区三区| 欧美在线视频免费观看| 欧美 日韩 国产 一区| 亚洲精品影视在线观看| 亚洲免费视频成人| 久久久美女艺术照精彩视频福利播放| 激情综合亚洲| 在线中文字幕日韩| 久久成人精品| 亚洲激情婷婷| 国产精品久久久久久av下载红粉 | 欧美一区二区三区在线| 亚洲国产激情| 欧美—级a级欧美特级ar全黄| 99xxxx成人网| 亚洲国产精品一区| 欧美激情女人20p| 正在播放亚洲一区| 亚洲精品视频免费| 亚洲一区免费网站| 欧美体内谢she精2性欧美 | 亚洲美女少妇无套啪啪呻吟| 国产精品久线观看视频| 欧美激情1区2区| 一本大道av伊人久久综合| 国产伦理精品不卡| 久久伊人亚洲| 久久成人精品一区二区三区| 国产精品成人va在线观看| 亚洲大片在线观看| 国产色产综合产在线视频| 麻豆久久久9性大片| 久久九九精品99国产精品| 亚洲欧洲日产国码二区| 国产精品一页| 欧美日韩成人在线视频| 亚洲国产导航| 久久爱另类一区二区小说| 国产伦精品一区二区三区视频黑人| 久久国产精品高清| 久久亚洲春色中文字幕|