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

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>
            国产啪精品视频| 亚洲欧美www| 久久资源在线| 欧美一区二区三区在线视频| 中文亚洲欧美| 亚洲中午字幕| 欧美一区免费视频| 久久av在线| 久久国产精彩视频| 久久久www成人免费精品| 久久久亚洲欧洲日产国码αv| 久久精品人人做人人爽电影蜜月| 久久久久国产精品厨房| 欧美黄色网络| 国产精品一二三视频| 红桃视频一区| 亚洲精品免费在线| 亚洲视频综合| 欧美中在线观看| 久久久五月婷婷| 亚洲国产aⅴ天堂久久| 久久电影一区| 久久久夜夜夜| 久久午夜国产精品| 亚洲欧美视频在线| 亚洲第一页自拍| 一本色道久久加勒比88综合| 国内精品久久久久影院优| 欧美激情a∨在线视频播放| 亚洲国产91精品在线观看| 久久一区欧美| 性伦欧美刺激片在线观看| 亚洲黄色天堂| 国产亚洲欧美日韩一区二区| 欧美日韩免费高清一区色橹橹| 久久一二三区| 久久亚洲捆绑美女| 欧美在线观看一区| 销魂美女一区二区三区视频在线| 一区二区精品在线| 夜夜狂射影院欧美极品| 亚洲精品一区二区三区婷婷月| 欧美大片在线观看| 久久视频在线免费观看| 麻豆精品在线观看| 欧美r片在线| 亚洲免费在线电影| 日韩视频免费大全中文字幕| 国产精品美女在线| 欧美日韩免费网站| 欧美激情第3页| 欧美激情影院| 欧美三级在线视频| 国产精品盗摄一区二区三区| 国产精品久久中文| 国产精品一区二区男女羞羞无遮挡| 欧美日韩亚洲高清一区二区| 欧美日韩一二区| 欧美先锋影音| 国产一区二区精品久久99| 狠狠色丁香久久综合频道| 激情成人在线视频| 亚洲人成毛片在线播放| 一区二区三区精品视频| 午夜激情亚洲| 国产在线精品自拍| 亚洲国产婷婷香蕉久久久久久99 | 欧美在线日韩| 欧美在线视频播放| 免费美女久久99| 亚洲成人在线免费| 午夜国产精品视频免费体验区| 亚洲一区国产视频| 欧美一区二区在线免费观看| 久久久久久亚洲精品杨幂换脸| 欧美成年人视频| 99在线热播精品免费99热| 午夜在线电影亚洲一区| 免费精品99久久国产综合精品| 国产精品av免费在线观看| 国产精品区二区三区日本 | 欧美日韩影院| 国产欧美一区二区精品忘忧草| 亚洲第一福利视频| 亚洲一区二区伦理| 欧美成人一区二区三区| 亚洲视频999| 蜜臀av性久久久久蜜臀aⅴ| 国产精品v日韩精品| 在线精品一区| 欧美一区永久视频免费观看| 欧美激情1区2区| 欧美在线视频导航| 欧美成人乱码一区二区三区| 久久亚洲图片| 日韩午夜电影在线观看| 欧美在线一二三区| 欧美日韩久久精品| 激情久久综合| 亚洲午夜精品一区二区| 久久一本综合频道| 午夜影院日韩| 国产精品分类| 一区二区电影免费观看| 欧美jizzhd精品欧美巨大免费| 亚洲欧美日韩精品久久亚洲区| 欧美日韩成人激情| 亚洲精品久久久久久久久久久久久| 久久精彩免费视频| 亚洲午夜一区二区三区| 欧美日韩不卡合集视频| 在线观看国产精品淫| 久久久av水蜜桃| 亚洲欧美国产精品va在线观看| 欧美一区二区三区电影在线观看| 国产精品久久综合| 国产精品一区二区你懂的| 精品成人一区二区三区| 亚洲天堂网在线观看| 久久婷婷国产麻豆91天堂| 欧美激情片在线观看| 日韩视频二区| 久久午夜av| 国产欧美一区二区三区在线看蜜臀| 亚洲人成人一区二区三区| 亚洲精品国产精品国自产在线 | 欧美怡红院视频| 国产精品系列在线播放| 亚洲欧洲av一区二区三区久久| 中文在线一区| 国产欧美在线看| 久久久久久久性| 久久国产精彩视频| 伊人久久噜噜噜躁狠狠躁| 蜜桃久久av一区| 欧美精品免费播放| 国产乱肥老妇国产一区二| 一区二区三区回区在观看免费视频| 亚洲精品一区久久久久久| 国产精品久久77777| 久久精品亚洲乱码伦伦中文| 午夜视频在线观看一区| 亚洲欧美影院| 午夜精品一区二区三区四区| 亚洲一区在线观看视频| 免费观看不卡av| 国产亚洲毛片在线| 久久久午夜视频| 久久综合综合久久综合| 欧美另类在线观看| 性欧美长视频| 欧美a一区二区| 小嫩嫩精品导航| 久久在线观看视频| 亚洲婷婷在线| 老色批av在线精品| 亚洲欧美日韩另类精品一区二区三区| 亚洲女女女同性video| 亚洲精品乱码久久久久久黑人| 一本一道久久综合狠狠老精东影业| 国产综合网站| 中文精品一区二区三区 | 欧美视频精品在线| 久久全球大尺度高清视频| 欧美激情一区二区三区四区| 国产偷久久久精品专区| 亚洲欧美日韩天堂| 99re66热这里只有精品3直播| 国产亚洲精品一区二区| 亚洲精品中文字幕女同| 激情综合在线| 香蕉av777xxx色综合一区| 一区二区三区日韩| 久久久亚洲高清| 中文国产成人精品| 久久精品一本久久99精品| 亚洲欧美日韩天堂| 欧美日韩成人免费| 欧美二区在线| 国产一区av在线| 乱人伦精品视频在线观看| 久久精品青青大伊人av| 亚洲免费人成在线视频观看| 亚洲精品1234| 国产精品一区二区三区久久| 久久精品91| 麻豆精品91| 国产伦精品免费视频| 一区二区三区产品免费精品久久75 | 国产精品久久久久久久免费软件 | 免费中文日韩| 久久精品理论片| 国产精品视频一| 猫咪成人在线观看| 蜜臀久久久99精品久久久久久 | 久久影音先锋| 久久久水蜜桃| 欧美福利影院| 亚洲国产激情| 一本到12不卡视频在线dvd|