第五章圖形數(shù)據(jù)結(jié)構(gòu)_第1頁
第五章圖形數(shù)據(jù)結(jié)構(gòu)_第2頁
第五章圖形數(shù)據(jù)結(jié)構(gòu)_第3頁
第五章圖形數(shù)據(jù)結(jié)構(gòu)_第4頁
第五章圖形數(shù)據(jù)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、5.1.1 圖段及其屬性圖段及其屬性 圖形學(xué)軟件在輸出基元和畫面之間設(shè)置一個(gè)中間數(shù)據(jù)結(jié)構(gòu),稱為圖段(Segment)。 圖段是由一組輸出基元和一組性質(zhì)(Attribute of Segment)所構(gòu)成的集合??梢员硎緸椋?Segment = Id, primitives, S-attributes 圖段的數(shù)據(jù)結(jié)構(gòu) 5.1.1 圖段及其屬性圖段及其屬性(續(xù)續(xù)) 圖段的數(shù)據(jù)結(jié)構(gòu)可分為兩個(gè)部分圖段的數(shù)據(jù)結(jié)構(gòu)可分為兩個(gè)部分: 1.圖段頭(head of segment) 包括圖段名、圖段的性質(zhì)以及指向圖段體的指針 2. 圖段體(body of segment) 一張線性表,其中每一個(gè)結(jié)點(diǎn)是構(gòu)成該圖段的

2、一個(gè)基元 圖段的常見性質(zhì)如下圖段的常見性質(zhì)如下: 可見性 優(yōu)先度 突出性 變換矩陣 5.1.2 圖段的操作圖段的操作 圖段的操作可以分為3類,即圖段的建立、圖段的刪改和圖段性質(zhì)的定義。 圖段的建立圖段的建立 圖段的建立過程包括3個(gè)步驟,即創(chuàng)造一個(gè)圖段、往這個(gè)圖段中裝入基元和關(guān)閉該圖段。 上述命令定義了一個(gè)名為a的圖段,它包括3個(gè)基元polyline1、polyline2和text 。例如,有命令序列如下: Create_segment(a); polyline(n1, x1, y1); polyline(n2, x2, y2); text(xt, yt, string); Close_segm

3、ent;5.1.2 圖段的操作圖段的操作(續(xù)續(xù)) 圖段的刪改圖段的刪改 圖段刪改包括下列圖段刪改包括下列2條命令條命令 : Delete_segment(Id) 該命令的功能是刪除名為Id的圖段。當(dāng)一個(gè)圖段被刪 除之后,它的名字可以被新的圖段所使用。 Rename_segment(Id_old, Id_new) 該命令的功能是修改圖段的Id。將它從Id_old改為 Id_new。 除此之外還有另一些圖段刪改命令。由于它們和工作站的概念有關(guān),所以放在后面介紹。 5.1.2 圖段的操作圖段的操作(續(xù)續(xù)) 定義圖段的性質(zhì)定義圖段的性質(zhì) 包含下列包含下列4條命令,分別對(duì)圖段的條命令,分別對(duì)圖段的4種性

4、質(zhì)予以操作:種性質(zhì)予以操作: Set_visibility(Id, v) 設(shè)置圖段是否可見 Set_segment_priority(Id, p) 設(shè)置圖段的優(yōu)先級(jí) Set_highlighting(Id, h) 設(shè)置圖段的突出性 Set_segment_transformation(Id, matrix) 設(shè)置圖段的變化矩陣5.1.2 圖段的操作圖段的操作(續(xù)續(xù))另有一部分與工作站有關(guān)的圖段操作如下另有一部分與工作站有關(guān)的圖段操作如下: : 圖段的刪除圖段的刪除 命令為 Delete_segment_from_workstation(ws, sg); 圖段的重畫圖段的重畫 命令為 Redra

5、w_segments_on_workstation(ws); 圖段的插入圖段的插入 命令為 Insert_segment(Id, matrix); 圖段的復(fù)制圖段的復(fù)制 命令為 Copy_segment_to_workstation(ws, sg) Associate_segment_with_workstation(ws, sg) 5.1.3 獨(dú)立于工作站的圖段存儲(chǔ)器和圖文件獨(dú)立于工作站的圖段存儲(chǔ)器和圖文件 與某個(gè)圖形外部設(shè)備相對(duì)應(yīng)的緩沖存儲(chǔ)器,稱為依靠工作站的圖段存儲(chǔ)器(Workstation Dependent Segment Storage),簡(jiǎn)稱WDSS。 同工作站獨(dú)立的圖段存儲(chǔ)器(

6、Workstation Independent Segment Storage),簡(jiǎn)稱WISS。 WISS可以大大增加使用時(shí)的靈活性。從圖形軟件的角度而言,WISS可以看作一個(gè)特殊的工作站。 圖文件(metafile)是圖形信息的長(zhǎng)期存儲(chǔ)文件。和WISS 一樣,metafile也可以作為一種特殊種類的工作站來處理。 圖文件不僅用于長(zhǎng)期存儲(chǔ)文件,而且也是圖形軟件和其他軟件之間的數(shù)據(jù)接口。 5.2.1 結(jié)構(gòu)元素結(jié)構(gòu)元素 結(jié)構(gòu)是由圖形數(shù)據(jù)和應(yīng)用數(shù)據(jù)組織在一起的一個(gè)整體,它是PHIGS 國際圖形標(biāo)準(zhǔn)模型所操作處理的基本單位。 構(gòu)成結(jié)構(gòu)的基本的數(shù)據(jù)實(shí)體稱為“結(jié)構(gòu)元素”,結(jié)構(gòu)元素用來表示應(yīng)用問題所需要的各

7、種幾何與非幾何數(shù)據(jù)。 結(jié)構(gòu)元素有如下結(jié)構(gòu)元素有如下7類:類: “輸出原語”類結(jié)構(gòu)元素 包括折線、多點(diǎn)標(biāo)記、文字、加注文字、填充區(qū)。 “屬性說明”類結(jié)構(gòu)元素 主要用于說明各種圖形原語的屬性。 “變換及裁剪”類結(jié)構(gòu)元素 用于定義建模變換和建模裁剪,共有如下8個(gè) 。5.2.1 結(jié)構(gòu)元素結(jié)構(gòu)元素 (續(xù)續(xù)) “控制”結(jié)構(gòu)元素 用來把若干結(jié)構(gòu)相互聯(lián)系起來構(gòu)成一個(gè)結(jié)構(gòu)網(wǎng)絡(luò)。 “編輯”結(jié)構(gòu)元素 即“標(biāo)號(hào)”(label),它在模型的編輯操作中起作用。 “通用”結(jié)構(gòu)元素 與PHIGS的實(shí)現(xiàn)有關(guān)。 “應(yīng)用數(shù)據(jù)”元素 應(yīng)用數(shù)據(jù)用于說明該結(jié)構(gòu)的一些非幾何屬性, “二極管”結(jié)構(gòu)的組成 5.2.2 結(jié)構(gòu)網(wǎng)絡(luò)結(jié)構(gòu)網(wǎng)絡(luò) 一個(gè)結(jié)

8、構(gòu)也可以包含另外一些結(jié)構(gòu),這是使用“控制結(jié)構(gòu)元素”Execute Structure來完成的。 下面是使用下面是使用PHIGS對(duì)與非門的描述對(duì)與非門的描述 :Open_structure(nand);Set_local_transformation(TD1, D, REPLACE);Execute_structure(diode);Set_local_transformation(TD2, D, REPLACE);Execute_structure(diode);Set_local_transformation(TR1, R, REPLACE);Execute_structure(resist

9、or);Set_local_transformation(TR2, R, REPLACE);Execute_structure(resistor);Set_local_transformation(TT1, T, REPLACE); 下一頁Execute_structure(transistor);Set_local_transformation(TG1, G, REPLACE);Execute_structure(ground);Close_structure; Open_structure(diode); Close_structure;Open_structure(resistor);

10、Close_structure;Open_structure(transistor); Close_structure;Open_structure(ground); Close_structure;5.2.2 結(jié)構(gòu)網(wǎng)絡(luò)結(jié)構(gòu)網(wǎng)絡(luò) (續(xù)續(xù)) 控制結(jié)構(gòu)元素Execute_structure的參數(shù)就是被引用的結(jié)構(gòu)名 每次引用一個(gè)結(jié)構(gòu)之前,應(yīng)用程序一般都應(yīng)該指出被引用的結(jié)構(gòu)所需進(jìn)行的引用變換(模型變換),這是用結(jié)構(gòu)元素Set_local_transformation來完成的。 5.2.2 結(jié)構(gòu)網(wǎng)絡(luò)結(jié)構(gòu)網(wǎng)絡(luò) (續(xù)續(xù)) 在PHIGS中,結(jié)構(gòu)的引用不允許直接或間接地嵌套進(jìn)行。因此,一組有引用關(guān)系的結(jié)構(gòu)就構(gòu)成

11、了一個(gè)結(jié)構(gòu)網(wǎng)絡(luò)。 結(jié)構(gòu)網(wǎng)絡(luò) 應(yīng)用程序所定義的所有結(jié)構(gòu)網(wǎng)絡(luò)在概念上都是存儲(chǔ)在一個(gè)所謂的“集中式結(jié)構(gòu)存儲(chǔ)器”(Centralized Structure Storage,簡(jiǎn)稱CSS)之中的。 5.2.3 集中式結(jié)構(gòu)存儲(chǔ)(集中式結(jié)構(gòu)存儲(chǔ)(CSS)CSS)與結(jié)構(gòu)操作與結(jié)構(gòu)操作 PHIGS將它處理的數(shù)據(jù)存放在一個(gè)集中式結(jié)構(gòu)存儲(chǔ)器CSS中對(duì)其進(jìn)行管理和操作。CSS中的基本單位是結(jié)構(gòu)。 對(duì)對(duì)CSS中結(jié)構(gòu)的操作處理有下面幾類:中結(jié)構(gòu)的操作處理有下面幾類: 結(jié)構(gòu)的刪除與修改 對(duì)CSS中結(jié)構(gòu)的搜索與查詢 結(jié)構(gòu)的存檔與檢索 結(jié)構(gòu)的遍歷與顯示 5.2.3 集中式結(jié)構(gòu)存儲(chǔ)(集中式結(jié)構(gòu)存儲(chǔ)(CSS)CSS)與結(jié)構(gòu)操作與結(jié)

12、構(gòu)操作( (續(xù)續(xù)) ) 結(jié)構(gòu)的刪除與修改結(jié)構(gòu)的刪除與修改 Delete_structure(structure_id) Delete_all_structures Delete_structure_network(structure_id, handling_flag) Change_structure_identifier(id_1, id_2) Change_structure_references(id_1, id_2) Change_structure_identifier_and_references 5.2.3 集中式結(jié)構(gòu)存儲(chǔ)(集中式結(jié)構(gòu)存儲(chǔ)(CSS)CSS)與結(jié)構(gòu)操作與結(jié)構(gòu)操作(

13、 (續(xù)續(xù)) ) 對(duì)對(duì)CSS中結(jié)構(gòu)的搜索與查詢中結(jié)構(gòu)的搜索與查詢 Inquire_structure_identifiers(error_indicator, list_of_structure_id) Inquire_open_structure(error_indicator, open_structure_status, structure_id) Inquire_element_pointer(error_indicator, element_position) Inquire_current_element_type_and_size(error_indicator, element_

14、type, ele-ment_size) Inquire_element_type_and_size(structure_id, position, error_indicator, ele-ment_type, element_size) Inquire_current_element_content(error_indicator, element_record) Inquire_structure_status(structure_id, error_indicator, status_indicator) Inquire_paths_to_ancestors(structure_id,

15、 path_order, path_depth, error_in-dicator, paths) 下一頁5.2.3 集中式結(jié)構(gòu)存儲(chǔ)(集中式結(jié)構(gòu)存儲(chǔ)(CSS)CSS)與結(jié)構(gòu)操作與結(jié)構(gòu)操作( (續(xù)續(xù)) )Inquire_paths_to_descendants(structure_id, path_order, path_depth, error_in-dicator, paths) PHIGS還允許應(yīng)用程序在指定的結(jié)構(gòu)中搜索某個(gè)(些)元素的位置,這是使用下面的兩個(gè)函數(shù)來完成的: Element_search(structure_id, start_position, search_direct

16、ion, inclusion_set, exclusion_set, error_indicator, status_indicator, found_element_position) Incremental_spatial_search(reference_point, distance, starting_path, model-ling_clip_flag, ceiling_index, normal_filter_list, inverted_filter_list, error_indicator, found_path) 5.2.3 集中式結(jié)存儲(chǔ)(集中式結(jié)存儲(chǔ)(CSS)CSS)與

17、結(jié)構(gòu)操作與結(jié)構(gòu)操作( (續(xù)續(xù)) ) 結(jié)構(gòu)的存檔與檢索結(jié)構(gòu)的存檔與檢索 為了臨時(shí)或永久性地保存已經(jīng)在CSS中定義的結(jié)構(gòu),PHIGS提供了把CSS中的結(jié)構(gòu)存儲(chǔ)到檔案文件中的功能,同時(shí)也提供了對(duì)檔案文件進(jìn)行檢查并把找到的結(jié)構(gòu)裝入CSS或者從檔案中刪除某一個(gè)(些)結(jié)構(gòu)的功能。有關(guān)的函數(shù)介紹如下:Open_archive_file(file_id, file_name) Close_archive_file(file_id) Archive_structures(file_id, list_of_structure_id) Archive_structure_networks(file_id, list

18、_of_structure_id) Archive_all_structures(file_id) Retrieve_structures_identifiers(file_id, list_of_structure_id) Retrieve_structures(file_id, list_of_structure_id) Retrieve_structure_networks(file_id, list_of_structure_id) 5.2.3 集中式結(jié)構(gòu)存儲(chǔ)(集中式結(jié)構(gòu)存儲(chǔ)(CSS)CSS)與結(jié)構(gòu)操作與結(jié)構(gòu)操作( (續(xù)續(xù)) ) 結(jié)構(gòu)的存檔與檢索結(jié)構(gòu)的存檔與檢索( (續(xù)續(xù)) ) Ret

19、rieve_all_structures(file_id) Delete_structure_from_archive(file_id, list_of_structure) Delete_structure_networks_from_archive(file_id, list_of_structure_id) Delete_all_structures_from_archive(file_id) Retrieve_paths_to_ancestors(file_id, structure_id, path_order, paths) Re-trieve_paths_to_descendan

20、ts(file_id, structure_id, path_order, path_depth, paths) 5.2.3 集中式結(jié)構(gòu)存儲(chǔ)(集中式結(jié)構(gòu)存儲(chǔ)(CSS)CSS)與結(jié)構(gòu)操作與結(jié)構(gòu)操作( (續(xù)續(xù)) ) 結(jié)構(gòu)的遍歷與顯示結(jié)構(gòu)的遍歷與顯示 為了把已經(jīng)定義的結(jié)構(gòu)(結(jié)構(gòu)網(wǎng)絡(luò))在工作站上顯示出來,PHIGS提供了如下的函數(shù):Post_structure(ws_id, structure_id, priority) 結(jié)構(gòu)的顯示 5.2.3 集中式結(jié)構(gòu)存儲(chǔ)(集中式結(jié)構(gòu)存儲(chǔ)(CSS)CSS)與結(jié)構(gòu)操作與結(jié)構(gòu)操作( (續(xù)續(xù)) ) 結(jié)構(gòu)的遍歷與顯示結(jié)構(gòu)的遍歷與顯示( (續(xù)續(xù)) ) 已經(jīng)顯示的結(jié)構(gòu)如果不再

21、需要顯示,則可以使用下面的函數(shù): Unpost_structure(ws_id, structures_id) Unpost_all_structures(ws_id) 為了顯示一個(gè)結(jié)構(gòu)網(wǎng)絡(luò),PHIGS必須把結(jié)構(gòu)網(wǎng)絡(luò)中所有結(jié)構(gòu)元素抽取出來逐個(gè)地進(jìn)行解釋處理,這個(gè)過程稱之為“遍歷”(traversal) 。 遍歷是一個(gè)遞歸過程。需要指出的是,遍歷過程對(duì)用戶來說是透明的。 5.2.4 建模操作建模操作 模型模型(model)(model):被研究的對(duì)象(實(shí)際或抽象)的一種表示 或描述。 模型構(gòu)造模型構(gòu)造:簡(jiǎn)稱為“建模”(modelling),是建立并對(duì)模型進(jìn) 行各種處理操作的過程。 建模系統(tǒng)建模系

22、統(tǒng): :具有模型的建立、修改、存儲(chǔ)、檢索以及其他 各種操作處理功能的軟件。 建模與圖形顯示和各種交互處理既緊密聯(lián)系在一起,又是相互區(qū)別。 基于結(jié)構(gòu)的建模是通過由底向上的構(gòu)造過程來產(chǎn)生形體的層次結(jié)構(gòu)模型,其機(jī)理與“搭積木塊”類似。 5.2.4 建模操作建模操作(續(xù)續(xù)) 基于結(jié)構(gòu)的建模操作除了上一節(jié)所涉及的部分以外, 還包括下面幾種操作: 建模變換與建模裁剪建模變換與建模裁剪 結(jié)構(gòu)網(wǎng)絡(luò)在引用一個(gè)結(jié)構(gòu)時(shí),往往先要使用結(jié)構(gòu)元素Set_local_transformation指出對(duì)被引用結(jié)構(gòu)所需進(jìn)行的建模變換。 假如結(jié)構(gòu)網(wǎng)絡(luò)具有多個(gè)層次,則最低層的結(jié)構(gòu)(葉結(jié)構(gòu))在根結(jié)構(gòu)中的位置、方向及大小應(yīng)由一系列建模

23、變換復(fù)合而成的復(fù)合變換來決定。不妨認(rèn)為葉結(jié)構(gòu)在模型坐標(biāo)系中定義,于是被引用的葉結(jié)構(gòu)在根結(jié)構(gòu)中的坐標(biāo)由下式?jīng)Q定:11144434241343332312423222114131211zyxzyxzyxMCMCMCMCMCMCCCCCCCCCCCCCCCCCWCWCWCCC表示對(duì)葉結(jié)構(gòu)需要進(jìn)行的復(fù)合建模變換 5.2.4 建模操作建模操作(續(xù)續(xù))上面公式中復(fù)合建模變換C的計(jì)算公式為 : C = G L L:局部建模變換; G:全局建模變換 L的初值為單位矩陣,應(yīng)用下面的函數(shù)可以指定它的值:Set_local_transformation_3(transformation_matrix, compos

24、ition_type)Set_local_transformation(transformation_matrix, composition_type) transformation_matrix分別為44或33的變換矩陣 composition_type指示類型 G可以定義新的值,使用下面的函數(shù)Set_global_transformation_3(transformation_matrix)Set_global_transformation(transformation_matrix)transformation_matrix就是新定義的全局建模變換矩陣 5.2.4 建模操作建模操作(續(xù)續(xù)

25、)建模裁剪建模裁剪 :PHIGS允許在建立模型的過程中對(duì)模型進(jìn)行裁剪。 建模裁剪使用的裁剪邊界稱為建模裁剪體,它由定義在模型坐標(biāo)中的一組半空間S的交(intersection)形成,即: S = S1 S2 S3 Sn 應(yīng)用程序可以使用下面的結(jié)構(gòu)元素來定義建模裁剪體: Set_modelling_clipping_volume_3(operator, half_spaces) Set_modelling_clipping_volume(operator, half_spaces) 建模裁剪操作執(zhí)行與否可以由下面的結(jié)構(gòu)元素進(jìn)行控制: Set_modelling_clipping_indicato

26、r(indicator) 建模裁剪體已有了修改,應(yīng)用程序需要把它恢復(fù)成從父結(jié)構(gòu)中繼承下來的初值時(shí),則可以使用下面的函數(shù): Restore_modelling_clipping_volume 5.2.4 建模操作建模操作(續(xù)續(xù))2.2.結(jié)構(gòu)的交互編輯結(jié)構(gòu)的交互編輯 PHIGS向應(yīng)用程序提供了對(duì)結(jié)構(gòu)中各個(gè)結(jié)構(gòu)元素個(gè)別地進(jìn)行存取和修改的能力,即結(jié)構(gòu)編輯操作。 需要進(jìn)行編輯處理的結(jié)構(gòu)必須先由函數(shù)Open_structure打開 ,編輯操作處理完畢后,則使用Close_structure把該結(jié)構(gòu)關(guān)閉.應(yīng)用程序一次只能打開一個(gè)結(jié)構(gòu),利用Inquire_open_ structure函數(shù)可以查詢現(xiàn)行打開的結(jié)構(gòu)的標(biāo)識(shí)。 應(yīng)用程序可以使用下列一些函數(shù)對(duì)元素指針進(jìn)行操作:Set_element_pointer(position) Offset_element_pointer(offset) Set_element_pointer_at_label(label) 5.2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論