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

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>
            欧美日韩大片一区二区三区| 欧美新色视频| 激情综合网激情| 久久久久五月天| 久久另类ts人妖一区二区| 一区二区三区在线观看欧美| 久久亚洲精品网站| 免费看亚洲片| 亚洲视频在线看| 亚洲免费一区二区| 国内成+人亚洲| 欧美不卡三区| 欧美日韩视频在线观看一区二区三区| 亚洲无线一线二线三线区别av| 99精品热视频| 国产一区二区三区久久久| 蜜臀久久99精品久久久久久9 | 国产精品一级在线| 久久精品国产亚洲一区二区三区| 欧美在线亚洲| 日韩视频一区二区三区在线播放 | 在线视频亚洲一区| 亚洲一区二区精品在线观看| 国内在线观看一区二区三区| 欧美va亚洲va日韩∨a综合色| 欧美精品免费看| 久久久久88色偷偷免费| 欧美.日韩.国产.一区.二区| 亚洲欧美区自拍先锋| 久久精品日产第一区二区| 日韩一区二区精品葵司在线| 午夜精品av| 亚洲精品三级| 久久www成人_看片免费不卡| 亚洲精品视频在线观看网站| 香蕉久久夜色| 在线视频精品| 毛片一区二区| 新狼窝色av性久久久久久| 美女诱惑一区| 久久女同互慰一区二区三区| 欧美日韩三级电影在线| 老司机凹凸av亚洲导航| 国产精品国产三级国产普通话99| 免费观看成人| 国产欧美婷婷中文| 日韩系列欧美系列| 亚洲第一福利在线观看| 亚洲免费在线播放| 亚洲一区二区三区涩| 欧美成人视屏| 欧美国产综合| 尤物精品在线| 欧美一区二区三区在线| 亚洲免费在线看| 欧美精品国产一区二区| 免费看亚洲片| 影音先锋亚洲电影| 欧美一区二区三区视频在线 | 欧美日韩高清在线一区| 美女日韩欧美| 国产综合色精品一区二区三区| 亚洲视频免费看| 夜色激情一区二区| 欧美精品电影| 亚洲人成在线影院| 亚洲精品在线免费观看视频| 美女在线一区二区| 欧美va亚洲va国产综合| 在线观看一区视频| 久久久久久一区二区三区| 久久久亚洲精品一区二区三区| 国产日韩欧美一区二区三区四区 | 欧美专区第一页| 国产精品美女诱惑| 一区二区三区四区五区在线| 中文一区在线| 国产精品99免费看| 亚洲一区二区三区激情| 午夜精品区一区二区三| 国产精品视频午夜| 欧美亚洲网站| 欧美a级理论片| 99ri日韩精品视频| 国产精品免费视频xxxx| 午夜激情综合网| 免费精品视频| 9l国产精品久久久久麻豆| 欧美色另类天堂2015| 亚洲综合色视频| 久久尤物视频| 99在线精品观看| 国产精品第三页| 久久精品五月婷婷| 亚洲高清色综合| 亚洲小说欧美另类社区| 国产日韩欧美制服另类| 久久影音先锋| 中文亚洲欧美| 免费观看一区| 亚洲在线免费观看| 欲色影视综合吧| 欧美日韩成人网| 欧美一区二区成人6969| 亚洲第一狼人社区| 午夜精品免费在线| 亚洲国产精品久久久| 国产精品v亚洲精品v日韩精品| 欧美一区二区三区在线视频| 亚洲第一精品夜夜躁人人躁| 午夜免费在线观看精品视频| 亚洲第一主播视频| 国产精品日韩欧美一区二区| 久久久噜噜噜久久狠狠50岁| 亚洲深夜福利在线| 亚洲夫妻自拍| 久久美女艺术照精彩视频福利播放| 日韩午夜中文字幕| 在线播放豆国产99亚洲| 欧美性大战久久久久| 美女视频黄免费的久久| 欧美亚洲网站| 正在播放亚洲| 亚洲欧洲日产国产网站| 久久先锋资源| 久久riav二区三区| 亚洲一区二区高清| 亚洲精品国产欧美| 在线不卡中文字幕播放| 国产九九视频一区二区三区| 欧美日韩国产首页在线观看| 快she精品国产999| 久久se精品一区精品二区| 亚洲一区二区四区| av成人天堂| 99国产麻豆精品| 亚洲欧洲日本一区二区三区| 欧美黄网免费在线观看| 久久综合伊人77777麻豆| 欧美亚洲三区| 欧美一级大片在线免费观看| 亚洲桃花岛网站| 亚洲无亚洲人成网站77777| 亚洲欧洲在线免费| 91久久一区二区| 亚洲国产精品一区在线观看不卡 | 久久阴道视频| 久久色中文字幕| 久久综合图片| 久久久噜噜噜久久| 乱人伦精品视频在线观看| 久久久久久91香蕉国产| 久久久999精品| 另类专区欧美制服同性| 久久婷婷蜜乳一本欲蜜臀| 久久理论片午夜琪琪电影网| 久热re这里精品视频在线6| 久久在线91| 欧美黄色精品| 欧美性猛片xxxx免费看久爱| 国产精品久久久久久久第一福利| 国产精品久久久久一区| 国产欧美精品在线| 国产亚洲一区二区三区在线观看| 国产亚洲成年网址在线观看| 国产有码一区二区| 亚洲黄色影片| 一道本一区二区| 欧美尤物一区| 欧美成人免费网| 日韩一级片网址| 亚洲欧美伊人| 另类激情亚洲| 欧美婷婷六月丁香综合色| 国产精品一二三四区| 一区二区三区在线看| 亚洲精品影视| 欧美在线播放视频| 欧美h视频在线| 夜夜爽夜夜爽精品视频| 久久不见久久见免费视频1| 久热这里只精品99re8久| 欧美精品色综合| 国产深夜精品福利| 亚洲免费成人| 久久免费黄色| 一本色道久久88综合亚洲精品ⅰ| 亚洲欧美一区在线| 欧美大片一区| 国产在线欧美日韩| 一区二区三区视频在线| 久久久精品免费视频| 亚洲精品一区二区网址 | 欧美在线精品一区| 欧美国产日产韩国视频| 亚洲天堂偷拍| 欧美高清自拍一区| 黄色在线一区| 香蕉免费一区二区三区在线观看| 免费久久99精品国产自|