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

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 Law Function

Posted on 2018-03-25 17:11 eryar 閱讀(1339) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenCascade Law Function

eryar@163.com

1.Introduction

在OpenCASCADE的TKGeomAlgo Toolkit中提供了一個Law Package,在Law包中有一個基類:Law_Function,字面上翻譯為 規則函數。其類圖如下所示:

wps_clip_image-22828

Figure 1. Law Function class diagram

本文主要對Law_Function的子類進行介紹,進一步理解OpenCASCADE中Law相關類的作用。

2.Law Functions

根據Law_Function可知,Law_Function的子類有常量規則Law_Constant、線性規則Law_Linear、組合規則Law_Composite及B樣條規則Law_BSpFunc。抽象類Law_Function的純虛函數有:

l Continuity(): 規則函數的連續性;

l Value():計算對應參數X的函數值Y;

l D1():計算規則函數在參數X處的一階導數;

l D2():計算規則函數在參數X處的二階導數;

l Bounds():規則函數的定義區間;

wps_clip_image-13300

從上面的虛函數可以看出類Law_Function是一個一元變量的函數,與類math_Function的功能類似。

3.Test Code

下面的代碼將規則函數Law_Function的幾個子類通過生成Draw腳本,在Draw Test Harness中進行可視化,直觀地顯示出了幾個規則函數,便于理解。

/*
Copyright(C) 2018 Shing Liu(eryar@163.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#include <TColgp_Array1OfPnt2d.hxx>
#include <Law_Constant.hxx>
#include <Law_Linear.hxx>
#include <Law_BSpFunc.hxx>
#include <Law_S.hxx>
#include <Law_Interpol.hxx>
#pragma comment(lib, "TKernel.lib")
#pragma comment(lib, "TKMath.lib")
#pragma comment(lib, "TKG2d.lib")
#pragma comment(lib, "TKG3d.lib")
#pragma comment(lib, "TKGeomBase.lib")
#pragma comment(lib, "TKGeomAlgo.lib")
Standard_Integer aId = 0;
void draw(const Handle(Law_Function)& theLaw, std::ostream& theOutput)
{
    const Standard_Integer aStep = 20;
    Standard_Real aFirst = 0.0;
    Standard_Real aLast = 0.0;
    Standard_Real aDelta = 0.0;
    Standard_Real aX = 0.0;
    Standard_Real aY = 0.0;
    theLaw->Bounds(aFirst, aLast);
    aDelta = (aLast - aFirst) / aStep;
    theOutput << "polyline law" << ++aId;
    for (Standard_Integer i = 0; i <= aStep; ++i)
    {
        aX = aFirst + i * aDelta;
        aY = theLaw->Value(aX);
        theOutput  << " " << aX << " " << aY << " 0.0";
    }
    theOutput << "\n vdisplay law" << aId << std::endl;
    theOutput << "vaspects law" << aId << " -setColor " << ((aId % 2) ? " red " : " yellow ") << std::endl;
}
void test(std::ostream& theOutput)
{
    // 1. Constant law.
    Handle(Law_Constant) aConstantLaw = new Law_Constant();
    aConstantLaw->Set(2.0, 0.0, 1.0);
    draw(aConstantLaw, theOutput);
    // 2. Linear evolution law.
    Handle(Law_Linear) aLinearLaw = new Law_Linear();
    aLinearLaw->Set(1.0, 2.0, 3.0, 5.0);
    draw(aLinearLaw, theOutput);
    // 3. An "S" evolution law.
    Handle(Law_S) aSLaw = new Law_S();
    aSLaw->Set(3.0, 5.0, 6.0, 8.0);
    draw(aSLaw, theOutput);
    // 4. Provides an evolution law that interpolates a set of parameter and value pairs (wi, radi)
    TColgp_Array1OfPnt2d aPoints(1, 4);
    aPoints.SetValue(1, gp_Pnt2d(6.0, 8.0));
    aPoints.SetValue(2, gp_Pnt2d(7.0, 5.0));
    aPoints.SetValue(3, gp_Pnt2d(8.0, 9.0));
    aPoints.SetValue(4, gp_Pnt2d(9.0, 2.0));
    Handle(Law_Interpol) anInterpolativeLaw = new Law_Interpol();
    anInterpolativeLaw->Set(aPoints);
    draw(anInterpolativeLaw, theOutput);
}
int main(int argc, char* argv[])
{
    std::ofstream aTclFile("d:/tcl/law.tcl");
    test(aTclFile);
    return 0;
}

程序會在d:/tcl中生成一個law.tcl文件,將此文件加載到Draw 中即可顯示出規則函數對應的曲線,如下圖所示:

wps_clip_image-6615

Figure 2. Visualization Law Function Curves

由圖可知,常量規則函數在定義區間內是一條直線;線性規則函數是一條直線;S型函數是S型的B樣條曲線;插值函數是根據指定點插值得到的B樣條曲線。

4.Conclusion

在OpenCASCADE中經常可以看到一些與Law相關的類,本文介紹了TKGeomAlgo中的Law包,綜上所述可知,Law就是一元函數,與math_Function的概念一致。

本文顯示規則曲線的方式可供借鑒,提高開發效率。只需要生成一個文本文件,就可以將結果可視化,對于其他三維的也是一樣。



為了方便大家在移動端也能看到我的博文和討論交流,現已注冊微信公眾號,歡迎大家掃描下方二維碼關注。
Shing Liu(eryar@163.com)

 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲视频在线观看视频| 亚洲精品免费网站| 日韩亚洲一区二区| 久久婷婷麻豆| 亚洲国产一区二区在线| 国产综合网站| 国产欧美精品一区| 欧美视频一二三区| 欧美日韩福利在线观看| 欧美sm重口味系列视频在线观看| 久久精品亚洲精品| 久久久免费观看视频| 久久精品国产精品| 久久一区二区三区av| 噜噜噜噜噜久久久久久91| 欧美大片免费久久精品三p| 欧美α欧美αv大片| 国模精品一区二区三区| 欧美一区二区三区在线播放| 欧美在线黄色| 久久久噜噜噜久久狠狠50岁| 狂野欧美激情性xxxx| 免费日韩视频| 亚洲精品综合| 午夜精品福利一区二区蜜股av| 亚洲一区综合| 久久久综合香蕉尹人综合网| 国内成+人亚洲| 久久经典综合| 99国产精品| 欧美一区视频| 欧美韩日一区| 国产美女精品在线| 国产精品99免费看| 狠狠色丁香婷婷综合影院| 亚洲欧洲精品一区二区三区| 亚洲色图自拍| 一本一本久久a久久精品综合妖精| 欧美亚洲视频一区二区| 国产亚洲一级| 国产精品99久久久久久久女警| 亚洲精品久久久久中文字幕欢迎你 | 国产精品一区二区欧美| 亚洲丰满在线| 宅男噜噜噜66国产日韩在线观看| 欧美一区二区日韩一区二区| 亚洲一区免费网站| 国产综合自拍| 亚洲激情欧美| 久久久久成人精品| 亚洲区中文字幕| 一区二区三区日韩精品| 国产欧美在线播放| 男人的天堂亚洲在线| 亚洲一区二区三区午夜| 国产视频亚洲| 亚洲欧美制服另类日韩| 欧美电影在线观看| 亚洲欧美日韩综合国产aⅴ| 国产综合色在线视频区| 亚洲日本成人女熟在线观看| 国产精品久久一卡二卡| 一本久道综合久久精品| 亚洲电影激情视频网站| 午夜精品视频网站| 欧美中文字幕精品| 国产精品美女主播在线观看纯欲| 久久国内精品视频| 欧美久久精品午夜青青大伊人| 亚洲国产精品久久久久婷婷老年| 亚洲精品国久久99热| 国产亚洲免费的视频看| 亚洲精品在线免费观看视频| 合欧美一区二区三区| 亚洲视频1区| 国产精品成人v| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 性做久久久久久免费观看欧美| 久久狠狠婷婷| 亚洲一二三级电影| 亚洲麻豆视频| 亚洲国产精品热久久| 亚洲欧美日韩精品一区二区| 亚洲天堂免费观看| 欧美日本免费一区二区三区| 欧美成人免费全部观看天天性色| 国产精品日本精品| 久久久久久一区二区三区| 欧美四级剧情无删版影片| 亚洲第一福利在线观看| 在线观看成人av电影| 欧美激情亚洲综合一区| 玖玖在线精品| 亚洲乱码国产乱码精品精98午夜| 亚洲欧洲日产国码二区| 樱桃国产成人精品视频| 久久国产精品久久w女人spa| 久久国产福利| 国产中文一区| 午夜日韩福利| 久久久久久久国产| 六月丁香综合| 美女尤物久久精品| 另类酷文…触手系列精品集v1小说| 欧美日韩一二区| 亚洲一级在线| 一本色道久久加勒比88综合| 一区二区三区黄色| 欧美刺激性大交免费视频 | 久久福利精品| 国产精品久久看| 亚洲另类在线一区| 99精品热视频只有精品10| 欧美激情亚洲视频| 在线不卡亚洲| 久久综合给合| 欧美aⅴ99久久黑人专区| 欧美午夜在线视频| 亚洲欧美国产视频| 在线观看一区二区视频| 亚洲精品精选| 亚洲日本成人网| 99综合在线| 一本色道久久精品| 久久精品视频免费观看| 欧美精品一区二区精品网| 一本久久a久久精品亚洲| 欧美va亚洲va香蕉在线| 欧美激情一区二区久久久| 亚洲激情啪啪| 久久九九久精品国产免费直播| 亚洲国产高潮在线观看| 一本色道88久久加勒比精品| 欧美三级午夜理伦三级中视频| 中文精品一区二区三区| 久久成人免费日本黄色| 欧美午夜在线视频| 狼狼综合久久久久综合网| 亚洲国产日本| 欧美精品一区二区视频| 日韩午夜电影| 欧美伊人久久| 尹人成人综合网| 久久成人一区| 亚洲视频一区二区| 麻豆免费精品视频| 亚洲最新在线视频| 国产视频亚洲精品| 免费成人av| 亚洲电影激情视频网站| 亚洲天堂网站在线观看视频| 国产精品一区二区三区久久| 亚洲一区二区在线免费观看| 毛片一区二区三区| 亚洲综合精品四区| 欧美福利一区| 香蕉久久夜色精品国产| 欧美高清视频一区二区| 国产精品99久久久久久久久久久久| 一区二区在线观看视频| 欧美日韩亚洲一区二区三区在线观看 | 狠狠v欧美v日韩v亚洲ⅴ| 欧美精品免费视频| 国产曰批免费观看久久久| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产精品成人一区二区三区夜夜夜| 亚洲大胆在线| 国产精品久久久| 欧美成人国产| 欧美一级成年大片在线观看| 亚洲国内精品在线| 久久经典综合| 日韩视频在线观看| 伊人成人开心激情综合网| 欧美视频中文字幕| 欧美成人黄色小视频| 亚洲欧美偷拍卡通变态| 亚洲日本成人| 欧美韩国在线| 久久久久久91香蕉国产| 亚洲香蕉视频| 亚洲承认在线| 国产一区二区剧情av在线| 欧美三区美女| 欧美精品v日韩精品v国产精品 | 欧美国产日本| 久久麻豆一区二区| 亚洲一区二区免费在线| 日韩视频在线你懂得| 国产女精品视频网站免费 | 一区二区三区av| 亚洲国产精品欧美一二99| 久久综合给合| 久久激五月天综合精品| 欧美一区二区三区免费看 | 国产精品久久国产精品99gif| 欧美屁股在线| 欧美日韩国产黄| 国产精品人人做人人爽人人添| 欧美日韩亚洲一区三区|