Math Primitives and Algorithms
數(shù)學圖元及其算法
eryar@163.com
一、概述 Overview
Open CASCADE中的數(shù)學圖元及其算法包括以下內(nèi)容:
l 向量和矩陣(Vectors and matrices);
l 幾何圖元(Geometric primitives);
l 數(shù)學算法(Math algorithms);
二、向量和矩陣 Vectors and Matrices
向量和矩陣部分提供了基本類型的矩陣和向量的C++實現(xiàn),也可用來定義更復雜的數(shù)據(jù)結(jié)構(gòu)。實數(shù)類型的矩陣和向量支持標準操作,如:加法、乘法、轉(zhuǎn)置、求逆操作等。
向量和矩陣的維數(shù)是任意的,所以必須在定義的時候聲明,以便分配存儲空間。在聲明后就不能對其維數(shù)進行修改。
向量和矩陣對象的本體和實體是相同的,即它們不能被共享且通過賦值操作來復制。
向量和矩陣的值可以通過索引來初始化和賦值,且其索引必須在維數(shù)即范圍之內(nèi)。
有些向量和矩陣的操作是非法的,在這種情況下將會產(chǎn)生異常。兩個標準的異常將會被使:
l Standard_DimensionError:當兩個矩陣或向量的操作涉及到的維數(shù)不匹配時產(chǎn)生;
l Standard_RangeError:當要訪問在矩陣或向量范圍之外的數(shù)據(jù)時產(chǎn)生;
三、幾何圖元類型 Primitive Geometric Types
1.概述 Overview
當要創(chuàng)建幾何對象之前,你必須決定將要創(chuàng)建的對象是用于二維還是用于三維空間。包gp提供了通過值而不是引用控制的二維和三維類。當這類對象復制時,對象本體和實體是一致的。改變對象的一個實例不會影響其它的。
2.包gp
包gp定義了基本的非持久性幾何實體,可用來進行代數(shù)計算和在二維和三維空間中基本的幾何分析。也提供了基本的變換操作,如單位化、旋轉(zhuǎn)、平移、鏡像、縮放變換,及這些變換的組合。這些幾何實體都是由值控制的。可用的幾何實體如下所示;
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 超環(huán)面(Toroidal Surface)
l 錐面(Conical Surface)
四、幾何圖元類型集合 Collections of Primitive Geometric Types
若你不想使這些幾何元素的單個實例而是他們的集合,包TColgp就是用來處理這類對象集合的。
l TColgp:包TColgp提供了包gp中的類的TCollection的實例化,如:XY、XYZ、Pnt、Pnt2d、Vec、Vec2d、Lin、Lin2d、Circ、Circ2d等。它們都是非持久性類。
五、基本幾何庫 Basic Geometric Libraries
有幾個庫可用來對曲線和曲面作基本的計算。若待處理的對象是由包gp中創(chuàng)建的,則初等曲線和曲面庫—包ElCLib和包ElSLib—中很多算法是有用的。
包Precision描述了兩個數(shù)比較時的精度標準。
l ElCLib:(Elementary Curves Libraries)提供用于解析曲線的方法,可對gp包中曲線進行簡單計算的庫。根據(jù)給定的參數(shù)計算點或根據(jù)點計算參數(shù)。
l ElSLib:(Elementary Surfaces Libraries)提供用于解析曲面的方法,可對gp包中的曲面進行簡單計算。通過給定的兩個參數(shù)計算點或計算一個點的參數(shù)。還提供了計算曲線和曲面法向的庫。
l Bnd:(Bounding Boxes)二維或三維空間中的包圍盒。
六、通用數(shù)學算法 Common Math Algorithms
通用數(shù)學算法庫提供了C++實現(xiàn)的最常用的數(shù)學算法,包括以下內(nèi)容:
l 求解線性方程組的算法
l 求函數(shù)極值的算法
l 求非線性方程(組)的根的算法
l 求方陣特征值和特征向量的算法
算法的實現(xiàn) Implementation of Algorithms
所有數(shù)學算法的實現(xiàn)原則是相同的,他們包含:
l 構(gòu)造函數(shù):執(zhí)行幾乎所有的計算,或給出合適參數(shù)。所有相關信息保存在結(jié)果對象中,所以使后期計算更高效。
l 函數(shù)IsDone:這個函數(shù)返回計算的成功與否。
l 一些特定函數(shù):對每個算法特定的函數(shù),用來確保得到各種結(jié)果。這些函數(shù)只有在IsDone返回true時才可能調(diào)用,否則將會產(chǎn)生StdFail_NotDone異常。
下面的例子演示的是使用高斯方法求解線性方程組的代碼。代碼截取自類math_Gauss的頭文件。
使用高斯方法求解方程組的主程序如下:
eryar@163.com
Pudongxin Shanghai China
20120924