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

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>
            亚洲国产清纯| 国产精品人人爽人人做我的可爱| 久久久亚洲国产美女国产盗摄| 亚洲精品免费在线观看| 国内精品国产成人| 欧美中文字幕第一页| 欧美日韩国产三区| 欧美日韩在线免费观看| 欧美视频一区二| 国产欧美va欧美va香蕉在| 国产午夜精品理论片a级大结局 | 99天天综合性| 亚洲一区在线免费观看| 欧美中文日韩| 国产精品久久福利| 国产精品久久久一区二区三区| 国产精品一区二区在线观看网站| 国产在线不卡视频| 亚洲国产一区二区视频| 日韩视频一区二区三区| 亚洲视频1区2区| 久久久国产精品一区二区中文| 免费不卡在线视频| 一本大道久久精品懂色aⅴ| 亚洲永久字幕| 免费欧美视频| 国产日韩精品视频一区二区三区| 精品成人久久| 亚洲一区二区在线观看视频| 久久亚洲精品欧美| 99re热这里只有精品视频| 欧美一区二区三区在线| 欧美黄色一区| 精品88久久久久88久久久| 中国日韩欧美久久久久久久久| 久久九九国产精品| 亚洲最黄网站| 美女视频黄a大片欧美| 国产精品成人一区二区三区吃奶| 在线观看视频一区| 欧美在线播放| 一区二区欧美视频| 蜜臀久久99精品久久久久久9| 国产精品视频九色porn| 亚洲精选大片| 欧美成人精品一区| 欧美一区二区三区男人的天堂| 欧美日本精品| 亚洲三级影院| 欧美阿v一级看视频| 午夜亚洲视频| 国产精品三区www17con| 久久精品日产第一区二区三区 | 国产精品jizz在线观看美国| 好看的日韩av电影| 香蕉av777xxx色综合一区| 欧美大片va欧美在线播放| 欧美在现视频| 国产精品久久激情| 亚洲免费观看高清完整版在线观看熊| 久久三级视频| 午夜精品久久| 国产精品网站在线播放| 亚洲免费视频在线观看| 久久综合99re88久久爱| 欧美亚洲免费| 国产视频一区免费看| 亚洲午夜久久久| 亚洲美女诱惑| 欧美视频一区二区三区四区| 亚洲精品综合| 亚洲美女中文字幕| 欧美婷婷久久| 午夜欧美精品久久久久久久| 一区二区高清在线| 国产精品伦子伦免费视频| 午夜精品久久久久久久99樱桃 | 欧美一区二区三区免费视频| 国产精品入口福利| 久久国产黑丝| 久久米奇亚洲| 日韩亚洲一区在线播放| 亚洲日本无吗高清不卡| 欧美日韩大片| 亚洲欧美日韩一区二区三区在线观看 | 亚洲在线一区| 国产日韩综合| 欧美成人精品一区| 欧美日韩精品一二三区| 香蕉精品999视频一区二区 | 免费久久99精品国产自| 欧美r片在线| 亚洲综合99| 欧美在线日韩在线| 亚洲精品日韩精品| 亚洲影院色无极综合| 玉米视频成人免费看| 亚洲人成网站精品片在线观看| 国产精品v欧美精品v日本精品动漫| 欧美亚洲在线播放| 麻豆av一区二区三区久久| av成人免费| 久久精品国产91精品亚洲| 日韩视频免费观看| 香蕉久久夜色精品国产| 亚洲欧洲偷拍精品| 亚洲欧美日韩精品久久久| 亚洲欧洲精品一区| 亚洲欧美综合v| 女女同性精品视频| 国产精品久久久久久久久搜平片 | 亚洲电影视频在线| 国产精品九九| 亚洲激情国产精品| 国内精品视频在线播放| 一区二区三区 在线观看视| 亚洲国产日韩在线一区模特| 午夜视频在线观看一区二区| 亚洲网站在线看| 欧美激情在线播放| 欧美国产日韩精品免费观看| 国产视频一区在线| 亚洲一区二区三区在线观看视频 | 久久精品国产欧美亚洲人人爽| 亚洲视频一起| 欧美高清视频| 免费成人在线视频网站| 国产一区二区高清视频| 亚洲一区二区视频| 亚洲先锋成人| 欧美日韩成人综合在线一区二区| 欧美国产日韩一区二区| 国产一区二区日韩精品| 亚洲一区二区三| 亚洲视频在线观看一区| 欧美连裤袜在线视频| 欧美国产精品va在线观看| 国产日韩精品视频一区| 先锋亚洲精品| 欧美一进一出视频| 欧美先锋影音| 亚洲精品久久久久久一区二区| 亚洲伦理久久| 欧美sm重口味系列视频在线观看| 久久久国产视频91| 国产婷婷一区二区| 久久久一区二区三区| 久久久www成人免费精品| 国产精品欧美精品| 一区二区三区 在线观看视| 一区二区三区自拍| 久久亚洲精品一区二区| 久久色中文字幕| 黄色一区二区在线| 亚洲国产美女久久久久| 99热这里只有精品8| 欧美激情视频一区二区三区免费 | 久久综合狠狠综合久久激情| 国产精品亚洲综合色区韩国| 老司机免费视频久久| 亚洲第一二三四五区| 久久久久久婷| 欧美成人中文| 亚洲三级影院| 久久久久久综合| 欧美在线播放高清精品| 亚洲一区二区久久| 欧美日韩在线视频首页| 欧美成人综合网站| 在线欧美三区| 欧美aⅴ99久久黑人专区| 欧美高清在线精品一区| 亚洲激情网址| 欧美xx69| 99国产精品| 国产精品video| 亚洲欧洲99久久| 亚洲福利小视频| 在线中文字幕一区| 国产精品色婷婷| 久久在线视频在线| 亚洲人成人99网站| 欧美一区二区性| 在线观看视频免费一区二区三区| 欧美激情网站在线观看| 一本大道av伊人久久综合| 99riav1国产精品视频| 国产精品欧美一区喷水| 久久免费的精品国产v∧| 亚洲肉体裸体xxxx137| 亚洲国产成人在线| 国产色产综合色产在线视频| 毛片av中文字幕一区二区| 亚洲免费av电影| 亚洲图片欧美日产| 亚洲欧洲在线播放| 国产欧美一区二区精品秋霞影院 | 欧美日韩高清区| 久久婷婷国产麻豆91天堂| 亚洲精品精选|