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

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) 評(píng)論(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

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

v 對(duì)二維點(diǎn)進(jìn)行二維B樣條或Bezier曲線插值;

v 對(duì)二維點(diǎn)進(jìn)行二維B樣條或Bezier曲線逼近;

v 對(duì)三維點(diǎn)進(jìn)行三維B樣條或Bezier曲線或B樣條曲面插值;

v 對(duì)三維點(diǎn)進(jìn)行三維B樣條或Bezier曲線或B樣條曲面逼近;

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

v 使用高級(jí)功能:提供簡單的方法調(diào)用來獲得擬合結(jié)果;

v 使用低級(jí)功能:專為想對(duì)擬合有更多控制的用戶設(shè)計(jì);

插值和逼近也是數(shù)值分析或計(jì)算方法中的主要內(nèi)容。用B樣條作為插值或逼近函數(shù)是數(shù)值分析中的一個(gè)具體方法。通過對(duì)OpenCASCADE中插值和逼近算法的學(xué)習(xí),加深對(duì)一些算法,如最小二乘法,多元函數(shù)求極值等數(shù)學(xué)知識(shí)的理解。

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

2.Analysis of a set of points

包GProp中的類PEquation提供了對(duì)點(diǎn)集、點(diǎn)云數(shù)據(jù)進(jìn)行分析的功能,可以用來驗(yàn)證在給定的精度范圍內(nèi)是否重合、共線或共面等,如果檢測(cè)結(jié)果是,那么算法將計(jì)算出這些點(diǎn)的重合點(diǎn)、線或面。如果檢測(cè)結(jié)果不是,則算法會(huì)計(jì)算出點(diǎn)集或點(diǎn)云的包圍盒。

3.Basic Interpolation and Approximation

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

v 2D Interpolation: 類Geom2dAPI_Interpolate可以用于生成一條通過一系列點(diǎn)的二維B樣條曲線。如果需要,還可以設(shè)置點(diǎn)相應(yīng)的切矢及參數(shù)來對(duì)插值曲線做進(jìn)一步的約束。

v 3D Interpolation: 類GeomAPI_Interpolate可以用于生成一條通過一系列點(diǎn)的三維B樣條曲線。如果需要,還可以設(shè)置點(diǎn)相應(yīng)的切矢及參數(shù)來對(duì)插值曲線做進(jìn)一步的約束。因?yàn)槭歉呒?jí)功能,所以需要很少的代碼就可以得到插值曲線,用法如下:

GeomAPI_Interpolate Interp(Points);

Handle_Geom_BSplineCurve C = Interp.Curve()

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

wps_clip_image-12820

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

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

Handle_Geom_BSplineCurve K = Approx.Curve()

v Surface Approximation:類GeomAPI_PointsToBSplineSurface可以用于根據(jù)點(diǎn)集擬合B樣條曲面。

4.Advanced Approximation

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

v 定義擬合切矢的規(guī)則,這些切矢有原點(diǎn)和極值;

v 根據(jù)各自參數(shù)平行地?cái)M合一系列曲線;

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

注:包AppDef和AppParCurves中通過宏定義實(shí)現(xiàn)了一種類似多態(tài)的功能,但是程序調(diào)試不方便,導(dǎo)致一些類名沒有看到聲明文件,對(duì)程序的理解造成一些不便。

4.1 Approximation by multiple point constraints

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

v 定義一組約束點(diǎn),使用類AppDef_MultiPointConstraint;

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

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

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

v 定義變分標(biāo)準(zhǔn)Variational Criteria;

注:在類AppDef_Variational中可以看到Variational Optimization變分優(yōu)化。對(duì)于工科出來的人來說,這些概念還真是有些陌生,還是學(xué)數(shù)學(xué)的人厲害!

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

wps_clip_image-28658

其中:Pi, Qi, Ri, ..., Si可以是二維點(diǎn)或三維點(diǎn);

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

P1, P2, .., Pn或Q, R,..., S的點(diǎn)系列用來擬合。

類AppDef_Compute用Bezier曲線來擬合點(diǎn);

類AppDef_BSplineCompute用B樣條曲線來擬合點(diǎn);

注:需要仔細(xì)理解AppDef_MultiPointConstraint和AppDef_MultiLine的用法。

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

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

v 定義擬合點(diǎn);

v 根據(jù)擬合點(diǎn)創(chuàng)建MultiLine;

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

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

 

/*
*    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;
}

程序運(yùn)行結(jié)果如下圖所示:

wps_clip_image-1016

5.Conclusion

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

wps_clip_image-27642

通過使用AppDef_MultiPointConstraint及AppDef_MultiLine等低級(jí)接口,來理解擬合數(shù)據(jù)點(diǎn)輸入及擬合結(jié)果的輸出。進(jìn)而去學(xué)習(xí)BFGS、LeastSquare等數(shù)學(xué)理論工具在實(shí)際中的應(yīng)用。對(duì)于多元函數(shù),梯度及BFGS等概念還好接受,對(duì)于變分法優(yōu)化之類理論已經(jīng)超出了工科數(shù)學(xué)的范圍,不過結(jié)合實(shí)際去學(xué)習(xí)這些概念應(yīng)該會(huì)更有效率。

Feedback

# re: OpenCASCADE Interpolations and Approximations  回復(fù)  更多評(píng)論   

2016-04-11 21:18 by zhaiht
高手:Opencascade有大量的內(nèi)存泄露怎么處理,好抓狂啊
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美人与性动交cc0o| 午夜精品一区二区三区在线视| 久久人91精品久久久久久不卡| 亚洲视频一区二区| 欧美激情小视频| 亚洲美女黄色片| 老司机成人网| 伊人久久噜噜噜躁狠狠躁| 日韩午夜精品| 亚洲精品免费在线| 免费国产一区二区| 麻豆久久精品| 亚洲国产视频直播| 亚洲欧洲精品一区二区| 亚洲欧洲在线播放| 一区二区三区成人| 99伊人成综合| 午夜在线精品偷拍| 狂野欧美激情性xxxx欧美| 欧美成va人片在线观看| 欧美视频日韩视频在线观看| 欧美日韩一区二区视频在线| 国产精品一区久久久| 国产一区二区三区的电影| 国产日韩欧美a| 91久久精品一区二区别| 亚洲一区二区在线| 久久国产精品久久国产精品| 久久久综合网| 亚洲精品中文字幕在线| 欧美一级久久久| 欧美黄色影院| 国产一区视频观看| 午夜免费日韩视频| 欧美日韩国产亚洲一区| 激情六月婷婷综合| 亚洲欧美区自拍先锋| 亚洲高清视频的网址| 亚洲字幕在线观看| 老牛嫩草一区二区三区日本 | 欧美一区日韩一区| 羞羞色国产精品| 亚洲乱码一区二区| 久久久久久久国产| 加勒比av一区二区| 久久激五月天综合精品| 欧美国产专区| 性欧美8khd高清极品| 欧美日韩高清区| 黑人巨大精品欧美一区二区| 亚洲自拍啪啪| 一本久道久久综合婷婷鲸鱼| 久久激情久久| 精品成人一区二区三区| 久久久亚洲国产美女国产盗摄| 亚洲精品一品区二品区三品区| 久久成人免费日本黄色| 国产日产欧产精品推荐色| 中文成人激情娱乐网| 亚洲免费成人| 国产日韩精品在线观看| 久久免费视频一区| 久久嫩草精品久久久久| 禁断一区二区三区在线| 久久久久久噜噜噜久久久精品 | 亚洲一区欧美| 欧美激情视频网站| 精品成人久久| 亚洲福利视频一区| 国产精品久久久久久超碰| 亚洲视频在线观看免费| 午夜精品久久久久久久男人的天堂| 午夜久久黄色| 欧美一区二区三区免费在线看| 欧美猛交免费看| 亚洲精品中文字幕在线| 亚洲国产精品视频| 欧美日韩成人综合在线一区二区| 亚洲美女色禁图| 亚洲综合色丁香婷婷六月图片| 国产一区二区高清不卡| 美女在线一区二区| 国产精品视频yy9299一区| 亚洲国产精品精华液网站| 国产欧美日韩精品在线| 夜夜嗨av一区二区三区免费区| 亚洲成色www久久网站| 午夜精品视频在线观看一区二区| 亚洲欧洲在线播放| 久久久久国产精品一区二区| 亚洲欧美区自拍先锋| 国产精品国产三级国产普通话99 | 亚洲视频一区在线| 亚洲一区视频在线| 99国产精品99久久久久久| 久久久99爱| 日韩香蕉视频| 欧美午夜不卡视频| 亚洲国产精品黑人久久久| 日韩一区二区福利| 欧美区二区三区| 亚洲香蕉视频| 久久久视频精品| 亚洲人成网站精品片在线观看 | 欧美区亚洲区| 久久综合九色综合欧美狠狠| 一区二区视频免费完整版观看| 久久精品免费电影| 亚洲激情成人| 午夜久久一区| 亚洲肉体裸体xxxx137| 国产精品vvv| 麻豆精品精品国产自在97香蕉| 亚洲精品国产无天堂网2021| 亚洲男同1069视频| 亚洲国产精品一区二区第一页| 欧美日韩国产大片| 欧美中文在线观看| 亚洲深夜福利| 日韩午夜电影| 亚洲国产成人av| 久久久久国产精品一区二区| 9人人澡人人爽人人精品| 国产欧美午夜| 国产精品卡一卡二| 欧美午夜不卡影院在线观看完整版免费| 久久精品国产免费| 亚洲欧美日韩中文视频| 亚洲午夜免费视频| 一区二区高清在线| 亚洲精品视频在线| 在线播放精品| 黄页网站一区| 韩国精品久久久999| 国产一二精品视频| 激情综合激情| 国产综合欧美| 亚洲韩国精品一区| 亚洲视频电影图片偷拍一区| 宅男噜噜噜66一区二区| 亚洲影院色在线观看免费| 亚洲一区二区三区四区中文| 亚洲免费中文| 免费成人黄色| 老牛影视一区二区三区| 欧美色道久久88综合亚洲精品| 蜜桃久久av一区| 欧美日韩国产一区二区三区| 欧美日韩一区二区三区| 国产区在线观看成人精品| 在线日韩欧美视频| 午夜日韩在线| 亚洲第一网站免费视频| 亚洲视频在线观看免费| 久久夜色精品亚洲噜噜国产mv| 欧美精品日韩综合在线| 国产一区二区三区在线观看免费视频| 亚洲国产精品va在线看黑人动漫| 一区二区三区四区蜜桃| 久久免费视频一区| 亚洲综合视频一区| 欧美日韩亚洲国产精品| 韩国一区二区在线观看| 亚洲欧洲av一区二区| 亚洲精品美女在线观看| 欧美丰满少妇xxxbbb| 在线观看亚洲一区| 久久琪琪电影院| 亚洲欧美在线免费观看| 国内精品一区二区三区| 久热精品视频| 欧美私人啪啪vps| 久久精品91| 小辣椒精品导航| 久久9热精品视频| 亚洲电影天堂av| 一本色道久久综合亚洲精品婷婷| 欧美日本亚洲韩国国产| 亚洲综合首页| 久久频这里精品99香蕉| 亚洲主播在线观看| 嫩草成人www欧美| 亚洲美女黄网| 亚洲欧美高清| 亚洲另类一区二区| 一区二区成人精品| 亚洲欧美日韩一区二区三区在线观看| 久久久久久免费| 亚洲男女自偷自拍| 久热精品视频在线观看| 欧美综合二区| 激情成人综合网| 久久午夜激情| 欧美日韩一区高清| 亚洲一区在线观看视频 | 国产日韩欧美精品| 久久精品国产综合| 欧美日韩精品免费观看视频完整| 亚洲男人的天堂在线aⅴ视频| 久久亚洲精品网站|