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

eryar

PipeCAD - Plant Piping Design Software.
RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
posts - 603, comments - 590, trackbacks - 0, articles - 0

OpenCascade Law Function

Posted on 2018-03-25 17:11 eryar 閱讀(1324) 評論(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>
            久久精品国产第一区二区三区| 欧美精品一区二区三| 依依成人综合视频| 中文日韩在线视频| 99国产精品国产精品毛片| 久久精品导航| 亚洲一品av免费观看| 老司机免费视频久久| 久久精品视频导航| 国产欧美日韩视频| 亚洲视频免费| 亚洲欧美日本国产专区一区| 欧美日韩免费一区二区三区| 亚洲黄色成人网| 一区二区三区在线视频免费观看| 亚洲欧美精品伊人久久| 亚洲男人第一av网站| 欧美日韩国产另类不卡| 91久久久亚洲精品| 日韩视频亚洲视频| 欧美区日韩区| 日韩亚洲不卡在线| 亚洲午夜精品福利| 国产精品久久久久久久久| 亚洲午夜电影网| 午夜一区二区三区在线观看| 国产欧美一区二区三区另类精品 | 久久国产精品第一页| 久久久久久亚洲综合影院红桃| 国产一区二区久久精品| 久久精品国产在热久久| 欧美成人午夜| 日韩一级不卡| 国产精品vvv| 性色av一区二区三区红粉影视| 久久久一二三| 亚洲国产一区二区三区高清| 欧美激情精品久久久久久变态| 亚洲另类在线视频| 欧美一区国产一区| 在线视频成人| 欧美精品自拍| 亚洲男人的天堂在线aⅴ视频| 久久免费高清| 亚洲日本欧美日韩高观看| 欧美日韩精品一区二区| 亚洲欧美影院| 欧美成人精品h版在线观看| 亚洲精品小视频在线观看| 国产精品毛片在线看| 久久久久久欧美| 亚洲久久在线| 久久女同精品一区二区| 亚洲免费电影在线观看| 国产欧美日韩亚洲| 欧美xart系列高清| 亚洲欧美国产另类| 亚洲国产裸拍裸体视频在线观看乱了中文 | 在线观看视频一区二区| 欧美人与性动交cc0o| 小黄鸭精品密入口导航| 91久久国产精品91久久性色| 午夜视频在线观看一区| 最新日韩av| 国产色爱av资源综合区| 欧美日韩国产不卡| 久久久蜜桃一区二区人| 亚洲永久精品大片| 91久久精品国产91久久性色| 久久国产精品久久w女人spa| aa级大片欧美三级| 亚洲永久在线| aa国产精品| 国产精品看片资源| 欧美一区亚洲二区| 可以看av的网站久久看| 亚洲激情第一区| 欧美日韩国产亚洲一区 | 亚洲精品久久久久久久久久久| 国产精品丝袜久久久久久app | 麻豆精品网站| 欧美在线高清视频| 亚洲免费视频中文字幕| 99爱精品视频| 亚洲国产一区在线| 欧美成人性生活| 久久婷婷国产综合国色天香| 香蕉久久夜色| 亚洲女同精品视频| 亚洲一区二区毛片| 亚洲视频在线一区观看| 亚洲毛片在线| 亚洲精品久久久久中文字幕欢迎你| 国产专区综合网| 国产视频一区在线观看| 国产欧美日韩一区二区三区在线| 欧美三区不卡| 欧美午夜性色大片在线观看| 欧美日韩午夜精品| 欧美日韩一区二区三区视频| 欧美日韩亚洲综合| 欧美日韩精品久久| 欧美视频在线观看 亚洲欧| 欧美日韩国产免费| 欧美日韩一区二区视频在线| 欧美日韩国产精品| 国产精品国产三级国产普通话99| 欧美日在线观看| 国产精品久久久久久超碰| 国产精品免费在线| 国产视频久久| 精品不卡在线| 亚洲精品美女免费| 亚洲一区二区免费视频| 欧美亚洲一区| 老司机67194精品线观看| 欧美成熟视频| 亚洲精品国产欧美| 亚洲视频 欧洲视频| 午夜电影亚洲| 久久免费高清视频| 欧美精品久久一区| 国产精品久久久一区二区| 国产伦精品一区二区三区免费| 海角社区69精品视频| 亚洲日本成人网| 亚洲欧美国产日韩中文字幕| 久久精品99久久香蕉国产色戒| 免费日韩一区二区| 91久久久亚洲精品| 亚洲性人人天天夜夜摸| 久久激五月天综合精品| 欧美激情一二区| 国产精品任我爽爆在线播放| 精品69视频一区二区三区| 日韩视频二区| 欧美专区日韩视频| 亚洲国产你懂的| 亚洲欧美国产日韩天堂区| 久久人人爽国产| 欧美日韩精品综合在线| 国产亚洲二区| 亚洲精品中文字幕女同| 欧美中文在线观看| 亚洲高清资源| 欧美一二区视频| 欧美精品综合| 永久免费精品影视网站| 亚洲桃花岛网站| 免费成人小视频| 亚洲综合三区| 欧美精品一区二区高清在线观看| 国产日韩欧美不卡在线| 夜夜嗨av一区二区三区网页| 久久一二三四| 亚洲在线国产日韩欧美| 欧美激情精品久久久久久| 狠狠网亚洲精品| 亚洲欧美日韩国产成人| 欧美激情网站在线观看| 久久se精品一区精品二区| 欧美午夜无遮挡| 日韩写真视频在线观看| 欧美14一18处毛片| 欧美一区91| 国产精品日韩久久久久| 一区二区欧美日韩| 欧美激情网友自拍| 久久五月激情| 国产主播喷水一区二区| 午夜精品美女久久久久av福利| 亚洲精品在线免费观看视频| 欧美va亚洲va日韩∨a综合色| 国产一区香蕉久久| 欧美在线免费视屏| 亚洲私人影院| 国产精品黄视频| 亚洲深夜av| 日韩香蕉视频| 欧美日韩中文精品| 一本色道久久综合精品竹菊| 亚洲国产精品免费| 欧美国产日韩一区二区三区| 亚洲高清视频中文字幕| 欧美成人午夜视频| 老司机免费视频一区二区三区| 韩日欧美一区二区三区| 久久人人爽人人| 久久久久久高潮国产精品视| 激情av一区| 欧美成人综合一区| 欧美电影免费观看| 亚洲精品中文字幕在线| 亚洲精品日本| 欧美四级在线| 欧美一区二区免费| 欧美一区影院| 亚洲国产精品小视频| 91久久香蕉国产日韩欧美9色| 欧美激情精品久久久久久大尺度|