1. 程式人生 > >OpenCASCADE中的數學圖元及其演算法

OpenCASCADE中的數學圖元及其演算法

Math Primitives and Algorithms

數學圖元及其演算法

[email protected]

一、概述 Overview

Open CASCADE中的數學圖元及其演算法包括以下內容:

l 向量和矩陣(Vectors and matrices);

l 幾何圖元(Geometric primitives);

l 數學演算法(Math algorithms);

二、向量和矩陣 Vectors and Matrices

向量和矩陣部分提供了基本型別的矩陣和向量的C++實現,也可用來定義更復雜的資料結構。實數型別的矩陣和向量支援標準操作,如:加法、乘法、轉置、求逆操作等。

向量和矩陣的維數是任意的,所以必須在定義的時候宣告,以便分配儲存空間。在聲明後就不能對其維數進行修改。

向量和矩陣物件的本體和實體是相同的,即它們不能被共享且通過賦值操作來複制。

向量和矩陣的值可以通過索引來初始化和賦值,且其索引必須在維數即範圍之內。

有些向量和矩陣的操作是非法的,在這種情況下將會產生異常。兩個標準的異常將會被使:

l Standard_DimensionError:當兩個矩陣或向量的操作涉及到的維數不匹配時產生;

l Standard_RangeError:當要訪問在矩陣或向量範圍之外的資料時產生;

三、幾何圖元型別 Primitive Geometric Types

1.概述 Overview

當要建立幾何物件之前,你必須決定將要建立的物件是用於二維還是用於三維空間。包gp提供了通過值而不是引用控制的二維和三維類。當這類物件複製時,物件本體和實體是一致的。改變物件的一個例項不會影響其它的。

2.包gp

gp定義了基本的非永續性幾何實體,可用來進行代數計算和在二維和三維空間中基本的幾何分析。也提供了基本的變換操作,如單位化、旋轉、平移、映象、縮放變換,及這些變換的組合。這些幾何實體都是由值控制的。可用的幾何實體如下所示;

l 二維和三維笛卡爾座標(2D & 3D Cartesian cooridinates

l 矩陣(Matrices

l 笛卡爾點(Cartesian

Points

l 向量(Vector

l 方向(Direction

l 軸(Axis

l 直線(Line

l 圓(Circle

l 橢圓(Ellipse

l 雙曲線(Hyperbola

l 拋物線(Parabola

l 平面(Plane

l 無限的柱面(Infinite Cylindrical Surface

l 球面(Spherical Surface

l 超環面(Toroidal Surface

l 錐面(Conical Surface

四、幾何圖元型別集合 Collections of Primitive Geometric Types

若你不想使這些幾何元素的單個例項而是他們的集合,包TColgp就是用來處理這類物件集合的。

l TColgp:包TColgp提供了包gp中的類的TCollection的例項化,如:XYXYZPntPnt2dVecVec2dLinLin2dCircCirc2d等。它們都是非永續性類。

五、基本幾何庫 Basic Geometric Libraries

有幾個庫可用來對曲線和曲面作基本的計算。若待處理的物件是由包gp中建立的,則初等曲線和曲面庫—包ElCLib和包ElSLib—中很多演算法是有用的。

Precision描述了兩個數比較時的精度標準。

l ElCLib:(Elementary Curves Libraries)提供用於解析曲線的方法,可對gp包中曲線進行簡單計算的庫。根據給定的引數計算點或根據點計算引數。

l ElSLib:(Elementary Surfaces Libraries)提供用於解析曲面的方法,可對gp包中的曲面進行簡單計算。通過給定的兩個引數計算點或計算一個點的引數。還提供了計算曲線和曲面法向的庫。

l Bnd:(Bounding Boxes)二維或三維空間中的包圍盒。

六、通用數學演算法 Common Math Algorithms

通用數學演算法庫提供了C++實現的最常用的數學演算法,包括以下內容:

l 求解線性方程組的演算法

l 求函式極值的演算法

l 求非線性方程(組)的根的演算法

l 求方陣特徵值和特徵向量的演算法

演算法的實現 Implementation of Algorithms

所有數學演算法的實現原則是相同的,他們包含:

l 建構函式:執行幾乎所有的計算,或給出合適引數。所有相關資訊儲存在結果物件中,所以使後期計算更高效。

l 函式IsDone:這個函式返回計算的成功與否。

l 一些特定函式:對每個演算法特定的函式,用來確保得到各種結果。這些函式只有在IsDone返回true時才可能呼叫,否則將會產生StdFail_NotDone異常。

下面的例子演示的是使用高斯方法求解線性方程組的程式碼。程式碼擷取自類math_Gauss的標頭檔案。

使用高斯方法求解方程組的主程式如下:

Pudongxin Shanghai China

20120924