程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Use Math Utilities in the OpenCASCADE

Use Math Utilities in the OpenCASCADE

編輯:C++入門知識

OpenCASCADE由七個模塊組成,分別如下:
• Module FoundationClasses; 基礎類;
• Module ModelingData; 造型數據;
• Module ModelingAlgorihtms; 造型算法;
• Module Visualization; 可視化;
• Module ApplicationFramework; 程序框架;
• Module DataExchange; 數據交換;
• Module Draw;
其中基礎類模塊有三個工具箱:
• Toolkit TKAdvTools; 高級工具箱;
• Toolkit TKMath; 數學工具箱;
• Toolkit TKernel; 核心工具箱;
根據OpenCASCADE的Reference文檔,查到math_Gauss類,描述如下:
This class implements the Gauss LU decomposition (Crout algorithm) with partial pivoting (rows interchange) of a square matrix and the different possible derived calculation :
• Solution of a set of linear equations.
• Inverse of a matrix.
• Determinant of a matrix.
主要根據矩陣的三角分解中的LU分解方法,可作如下計算:
• 線性方程組的求解;
• 矩陣的逆;
• 矩陣的行列式;
為簡單起見,先做個簡單的測試,求以下方程組的解:
 Equation
OpenCASCADE的C++代碼如下:(新建一個控制台程序,需要包含TKernel.lib;TKMath.lib兩個庫;)
   1:  //------------------------------------------------------------------------------
   2:  //    Copyright (c) 2012 eryar All Rights Reserved.
   3:  //
   4:  //        File    : Main.cpp
   5:  //        Author  : [email protected]
   6:  //        Date    : 2012-6-20 20:06
   7:  //        Version : 1.0v
   8:  //
   9:  //    Description : Learn to use OpenCASCADE Math Utilities.
  10:  //
  11:  //==============================================================================
  12:  
  13:  #include <math_Gauss.hxx>
  14:  
  15:  int main(int argc, char* argv[])
  16:  {
  17:      math_Matrix aMatrix(1, 3, 1, 3);
  18:      math_Vector b1(1, 3);
  22:  
  23:      //aMatrix, b1 and b2 are set here to the appropriate values
  24:      aMatrix(1, 1)   = 10;
  25:      aMatrix(2, 2)   = 2;
  26:      aMatrix(3, 3)   = 8;
  27:  
  28:      b1.Init(1);
  29:  
  30:      // Use Gause method
  31:      math_Gauss  sol(aMatrix);
  32:  
  33:      // LU decomposition of A
  34:      if (sol.IsDone())
  35:      {
  36:          sol.Solve(b1, x1);
  37:      }
  38:      else
  39:      {
  40:          // Fix up
  41:          try
  42:          {
  43:              sol.Solve(b1, x1);
  44:          }
  45:          catch (Standard_Failure)
  46:          {
  47:              Handle(Standard_Failure) error = Standard_Failure::Caught();
  48:              cout<<error<<endl;
  49:          }
  50:      }
  51:  
  52:      cout<<aMatrix;
  53:      cout<<b1;
  54:      cout<<x1;
  55:  
  56:      return 0;
  57:  }
輸出結果如下所示: www.2cto.com
   1:  math_Matrix of RowNumber = 3 and ColNumber = 3
   2:  math_Matrix ( 1, 1 ) = 10
   3:  math_Matrix ( 1, 2 ) = 0
   4:  math_Matrix ( 1, 3 ) = 0
   5:  math_Matrix ( 2, 1 ) = 0
   6:  math_Matrix ( 2, 2 ) = 2
   7:  math_Matrix ( 2, 3 ) = 0
   8:  math_Matrix ( 3, 1 ) = 0
   9:  math_Matrix ( 3, 2 ) = 0
  10:  math_Matrix ( 3, 3 ) = 8
  11:  math_Vector of Length = 3
  12:  math_Vector(1) = 1
  13:  math_Vector(2) = 1
  14:  math_Vector(3) = 1
  15:  math_Vector of Length = 3
  16:  math_Vector(1) = 0.1
  17:  math_Vector(2) = 0.5
  18:  math_Vector(3) = 0.125
  19:  Press any key to continue . . .
結論
通過對基礎類模塊中數學工具箱的使用,對OpenCASCADE慢慢進行了解。

 作者:eryar
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved