欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

OpenCASCADE Color Scale

系統 2726 0

OpenCASCADE Color Scale

eryar@163.com

Abstract. The color scale is a specialized label object that displays a color map and an accompanying numerical scale for color mapped or contour data plots. As the geometry modeling kernel of SALOME, OpenCASCADE provides the color scale function. The paper focus on the usage of color scale in OpenCASCADE.?

Key Words. OpenCASCADE, Color Scale, 應力云圖, 顏色映射表

1. Introduction

應力云圖是一種應用廣泛的標量場可視化方法,也經常用于表達矢量場或張量場的一個分量。云圖在顏色與標量數據之間建立某種確定的映射關系,在計算機屏幕上繪制一個顏色離散變化的圖像來顯示科學計算結果。云圖將標量場定義域內的數據值映射成不同的顏色,從而通過顏色變化來反映數據場中數據的變化規律。?

很多數值分析軟件后處理的結果都有繪制云圖的功能。如下圖所示為Abaqus軟件產生的云圖:?

wps_clip_image-8337

Figure 1.1 A Colored Stress Patterns by Abaqus?

OpenCASCADE作為SALOME開源數值分析軟件的幾何造型內核,也提供了云圖可視化的功能。本文主要介紹如何使用OpenCASCADE來顯示模型的應力云圖中的顏色映射表(Color Scale)。?

2. Color Scale

云圖繪制依賴于顏色集合與標量場數值集合之間的一一映射,即顏色映射表(Color Scale)。顏色映射表為區域填充時建立數值與顏色的映射關系。如下圖所示:?

wps_clip_image-10285

Figure 2.1 Color Scale?

作為分析對比參照標準,用戶可以根據顏色線性表對應的數值范圍,來判斷某區域內數值分布規律。顏色線性表不僅應用于云圖繪制,也應用于其他計算可視化算法中。?

顏色線性表可以定義成不同的形式,多以對比鮮明的色彩作為線性表段顏色,在兩個對比色之間采用過渡顏色。?

在OpenCASCADE中顏色映射表的繪制是由Viewer來實現的。其Tcl命令為vcolorscale,如下所示:?

wps_clip_image-28256

Figure 2.2 Color Scale Tcl Command: vcolorscale?

默認的顏色映射表的顯示效果如下圖所示:?

wps_clip_image-22753

Figure 2.3 Color Scale in Draw Test Harness?

3. Tcl Test

OpenCASCADE基于Tcl/Tk的Draw Test Harness環境很方便測試一些想法。現在在Draw Test Harness中來顯示一個完整的云圖,如下圖所示:?

wps_clip_image-9599

Figure 3.1 Color Scale in Draw Test Harness?

實現上圖的Tcl腳本代碼如下所示:

      
        #
      
      
        

#    Copyright (c) 2014 eryar All Rights Reserved.

#

#        File    : colorscale.tcl

#        Author  : eryar@163.com

#        Date    : 2014-09-20 18:10

#        Version : 1.0v

#

#    Description : Demonstrate the usage of OpenCASCADE color scale.

#
      
      
        pload ALL



meshfromstl m data
      
      /stl/head.
      
        stl



meshcolors m nodaltex 
      
      
        0
      
      
        #
      
      
         show the color sacle.
      
      
        vcolorscale



vfit
      
    

首先加載所需要的所有模塊,再從head.stl中加載網格模型;設置網格頂點顏色后就用vcolorscale命令打開發顏色映射表。

?

4.Code Analysis

根據Tcl命令找到對應的C++實現代碼如下所示:?

      
        //
      
      
        =============================================================================


      
      
        //
      
      
        function : VColorScale


      
      
        //
      
      
        purpose  : representation color scale


      
      
        //
      
      
        =============================================================================
      
      

#include <V3d_ColorScale.hxx>




      
        static
      
      
        int
      
       VColorScale (Draw_Interpretor& di, Standard_Integer argc, 
      
        const
      
      
        char
      
       **
      
         argv)

{

  
      
      
        if
      
       ( argc != 
      
        1
      
       && argc != 
      
        4
      
       && argc != 
      
        5
      
       && argc != 
      
        6
      
       && argc != 
      
        8
      
      
         )

  {

    di 
      
      << 
      
        "
      
      
        Usage : 
      
      
        "
      
       << argv[
      
        0
      
      ] << 
      
        "
      
      
         [RangeMin = 0 RangeMax = 100 Intervals = 10 HeightFont = 16 Position = Right X = 0 Y = 0]  
      
      
        "
      
       << 
      
        "
      
      
        \n
      
      
        "
      
      
        ;

    
      
      
        return
      
      
        1
      
      
        ;

  }



  Handle(AIS_InteractiveContext) aContext 
      
      =
      
         ViewerTest::GetAISContext();

  
      
      
        if
      
      
        (aContext.IsNull()) {

    di 
      
      << argv[
      
        0
      
      ] << 
      
        "
      
      
         ERROR : use 'vinit' command before 
      
      
        "
      
       << 
      
        "
      
      
        \n
      
      
        "
      
      
        ;

    
      
      
        return
      
       -
      
        1
      
      
        ;

  }



  Standard_Real minRange 
      
      = 
      
        0
      
      . , maxRange = 
      
        100
      
      
        . ;



  Standard_Integer numIntervals 
      
      = 
      
        10
      
      
         ;

  Standard_Integer textHeight 
      
      = 
      
        16
      
      
        ;

  Aspect_TypeOfColorScalePosition position 
      
      =
      
         Aspect_TOCSP_RIGHT;

  Standard_Real X 
      
      = 
      
        0
      
      ., Y = 
      
        0
      
      
        . ;



  
      
      
        if
      
       ( argc < 
      
        9
      
      
         )

  {

     
      
      
        if
      
      ( argc > 
      
        3
      
      
         )

     {

       minRange 
      
      = Draw::Atof( argv[
      
        1
      
      
        ] );

       maxRange 
      
      = Draw::Atof( argv[
      
        2
      
      
        ] );

       numIntervals 
      
      = Draw::Atoi( argv[
      
        3
      
      
        ] );

     }

     
      
      
        if
      
       ( argc > 
      
        4
      
      
         )

       textHeight 
      
      = Draw::Atoi( argv[
      
        4
      
      
        ] );

     
      
      
        if
      
       ( argc > 
      
        5
      
      
         )

       position 
      
      = (Aspect_TypeOfColorScalePosition)Draw::Atoi( argv[
      
        5
      
      
        ] );

     
      
      
        if
      
       ( argc > 
      
        7
      
      
         )

     {

       X 
      
      = Draw::Atof( argv[
      
        6
      
      
        ] );

       Y 
      
      = Draw::Atof( argv[
      
        7
      
      
        ] );

     }

  }

  Handle(V3d_View) curView 
      
      =
      
         ViewerTest::CurrentView( );

  
      
      
        if
      
      
         ( curView.IsNull( ) )

    
      
      
        return
      
      
        1
      
      
        ;

  Handle(Aspect_ColorScale) aCSV 
      
      = curView->
      
        ColorScale( );

  Handle(V3d_ColorScale) aCS 
      
      =
      
         ( Handle( V3d_ColorScale )::DownCast( aCSV ) );

  
      
      
        if
      
      ( !
      
         aCS.IsNull( ) )

  {

    aCS
      
      ->
      
        SetPosition( X , Y );

    aCS
      
      ->SetHeight( 
      
        0.95
      
      
        ) ;

    aCS
      
      ->
      
        SetTextHeight( textHeight );

    aCS
      
      ->
      
        SetRange( minRange , maxRange );

    aCS
      
      ->
      
        SetNumberOfIntervals( numIntervals );

    aCS
      
      ->
      
        SetLabelPosition( position );

    
      
      
        if
      
      ( !curView->
      
        ColorScaleIsDisplayed() )

      curView
      
      ->
      
        ColorScaleDisplay( );

  }

  
      
      
        return
      
      
        0
      
      
        ;

}
      
    

由上述代碼可知,顏色映射表主要是設置當前View中的Aspect_ColorScale。顯示顏色映射表主要是由類V3d_ColorScale實現。取得當前視圖的顏色表對象后,設置相關參數,即可調用視圖的ColorScaleDisplay()來顯示了。?

根據上述Draw Test Harness中的實現代碼,可以很容易地在自己的程序中實現相關的功能了。

?

5.Conclusion

OpenCASCADE的視圖也提供了顯示顏色映射表的功能,通過設置視圖的V3d_ColorScale的相關參數,即可顯示出顏色映射表了。?

??

6. References

1. 王成恩. 面向科學計算的網格劃分與可視化技術. 科學出版社. 2011?

?

PDF Version and Tcl Script: OpenCASCADE Color Scale

OpenCASCADE Color Scale


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天干天天操天天爽 | 狠狠草视频 | 国产色拍拍视频在线 | 99人中文字幕亚洲区 | 毛片久久| 精品伊人久久久99热这里只 | 在线观看高清免费 | 午夜影院在线免费观看视频 | 国产免费视频 | 99av涩导航 | 精品国产一区二区三区久久久蜜臀 | 亚洲成人免费网站 | 碰碰碰人人澡人人爱摸 | 黄a在线观看 | а√天堂资源中文最新版地址 | 久草在线免费新视频 | 一区二区在线免费观看 | 日韩在线不卡一区 | 日韩欧美国产一区二区 | 国产精品第三页在线看 | 国产欧美精品一区二区三区 | 日韩日b视频 | 韩漫重考生漫画画免费读漫画下拉式土豪漫 | 日日摸夜夜爽日日摸视频 | 亚洲视频www | 久久99国产精一区二区三区 | 欧美亚洲 尤物久久 综合精品 | 小蝌蚪污视频 | 成人免费影 | 日韩视频在线观看免费视频 | 国产成人精品免高潮在线观看 | 成人国产精品免费观看视频 | 免费在线成人av | 欧美亚洲精品在线 | 午夜寂寞少妇aaa片毛片 | 欧美一级在线免费 | 波多野衣结在线精品二区 | www.999abab.com| 夜夜艹| 欧美久久久久久久一区二区三区 | 成人精品视频 |