DESCRIPTION: This module tests the capabilities of the incremental spatial search feature. This feature should allow the program to look for graphical primitives within a specified section of a structure network, based on their location in world co-ordinates. The term "ISS" is used throughout to apply to both the two-dimensional and three-dimensional incremental spatial search. SEMANTIC REQUIREMENTS: *** *** *** *** 2D vs. 3D *** *** *** ***#F 311 312
SR1. <Incremental spatial search> behaves exactly like <incremental spatial search 3> with the z-co-ordinate of the search reference point = 0.
*** *** *** *** Conceptual traversal *** *** *** ***#F 113 311 312
SR2. ISS performs a conceptual traversal (including the setting of the PHIGS traversal state list) of the structure network whose root is the first structure in the starting path. This conceptual traversal consists of a setup process and a search process.
#F 311 312
SR3. The setup process is the part of the conceptual traversal up to and including the position specified by the starting path; the PHIGS traversal state list is maintained, but no graphical primitives are examined.
#F 311 312
SR4. The search process is the part of the conceptual traversal beginning immediately after the position specified by the starting path is reached and ending either immediately after the last element of the structure indicated by the search ceiling is reached or when a qualifying graphical primitive is found, whichever occurs first.
#F 311 312
SR5. If a qualifying graphical primitive is found, ISS returns the path (from the root of the network) of the structure element which generated it, otherwise ISS returns a null path.
#F 9-24 60 61 311 312
SR6. A graphical primitive qualifies if and only if its locus intersects the search reference volume and its nameset is compatible with the normal and inverted filter list.
#F 311 312
SR7. If the element position of the last entry in the starting path is 0, the specified position is that immediately preceding the first element (if any) of the structure named in that entry.
#F 311 312
SR8. The structure indicated by a search ceiling = n is the structure specified in the nth element of the starting path.
*** *** *** *** Search reference volume *** *** *** ***#F 311 312
SR9. If the search distance is greater than zero, the search reference volume (in world co-ordinates) is the sphere whose center is the search reference point and whose radius equals the search distance; otherwise it is simply the search reference point.
*** *** *** *** Locus of graphical primitives *** *** *** ***#F 9-24 75-80 82 311 312
SR10. The locus of a graphical primitive (in world co-ordinates) is obtained from the locus of the generating structure element (in modelling co-ordinates) by first applying the current composite modelling transformation, and then, if and only if the modelling clip flag parameter is CLIP, applying the current modelling clipping volume.
#C The current modelling clipping indicator in the PHIGS traversal state list is ignored.#F 11 12 311 312
SR11. The locus of a polymarker structure element is the specified set of points.
#F 9 10 311 312
SR12. The locus of a polyline structure element is set of line segments connecting the specified sequence of points.
#F 17 18 311 312
SR13. The locus of a fill area structure element is the border defined by the specified sequence of points and the portion of the fill area plane interior to the border.
#F 19 20 311 312
SR14. The locus of a fill area set structure element is the set of borders defined by the specified set of point sequences and the portion of the fill area plane interior to those borders.
#F 13 14 311 312
SR15. The locus of a text structure element is the text extent rectangle generated by the current geometric text attributes, together with text font = 1, text precision = STROKE, character expansion factor = 1, and character spacing = 0.
#C The default non-geometric attribute values are the same as for <inquire text extent>. Note that text precision STROKE is used, and thus the current text precision in the PHIGS traversal state list is ignored.#F 15 16 311 312
SR16. The locus of an annotation text relative structure element is the annotation reference point.
#F 21 22 311 312
SR17. The locus of a cell array structure element is the cell array parallelogram defined by the specified corner points.
*** *** *** *** Namesets and filters *** *** *** ***#F 60 61 311 312
SR18. The nameset of a graphical primitive is compatible with the normal filter list if it is accepted by every filter in the list.
#F 60 61 311 312
SR19. The nameset of a graphical primitive is compatible with the inverted filter list if it is rejected by every filter in the list.
#F 60 61 311 312
SR20. A nameset is accepted by a filter if it has at least one name in common with the filter's inclusion set and no names in common with the filter's exclusion set; otherwise it is rejected.
#F 205
SR21. The maximum lengths of the normal and inverted filter lists returned by <inquire phigs facilities> must be at least 1.
#F 205 311 312
SR22. The lengths of the normal and inverted filter lists specified for ISS may be any value up to the maxima returned by <inquire phigs facilities>.
LOCAL DICTIONARY:
Functions --- 009: ppl3 <polyline 3> 010: ppl <polyline> 011: ppm3 <polymarker 3> 012: ppm <polymarker> 013: ptx3 <text 3> 014: ptx <text> 015: patr3 <annotation text relative 3> 016: patr <annotation text relative> 017: pfa3 <fill area 3> 018: pfa <fill area> 019: pfas3 <fill area set 3> 020: pfas <fill area set> 021: pca3 <cell array 3> 022: pca <cell array> 023: pgdp3 <generalized drawing primitive 3> 024: pgdp <generalized drawing primitive> 060: pads <add names to set> 061: pres <remove names from set> 075: pslmt3 <set local transformation 3> 076: pslmt <set local transformation> 077: psgmt3 <set global transformation 3> 078: psgmt <set global transformation> 079: psmcv3 <set modelling clipping volume 3> 080: psmcv <set modelling clipping volume> 082: prmcv <restore modelling clipping volume> 113: pexst <execute structure> 205: pqphf <inquire phigs facilities> 311: piss3 <incremental spatial search 3> 312: piss <incremental spatial search> Data Structures --- 2 ... phigs_description_table 2.8 ... maximum_length_of_normal_filter_list_for_iss 2.9 ... maximum_length_of_inverted_filter_list_for_iss 3 ... phigs_traversal_state_list 3.3 ... current_text_attributes 3.3.12 ... current_character_height 3.3.13 ... current_character_up_vector 3.3.14 ... current_character_width 3.3.15 ... current_character_base_vector 3.3.16 ... current_text_path 3.3.17 ... current_text_alignment_horizontal 3.3.18 ... current_text_alignment_vertical 3.11 ... current_name_set 3.12 ... current_modelling_attributes 3.12.1 ... current_global_modelling_transformation 3.12.2 ... current_local_modelling_transformation 3.12.3 ... current_modelling_clipping_volume 7 ... structure_state_list 7.1 ... structure_identifier 7.3 ... list_of_structure_elements 7.3.1 ... graphical_primitives 7.3.1.1 ... polyline_3 7.3.1.2 ... polyline 7.3.1.3 ... polymarker_3 7.3.1.4 ... polymarker 7.3.1.5 ... text_3 7.3.1.6 ... text 7.3.1.7 ... annotation_text_relative_3 7.3.1.8 ... annotation_text_relative 7.3.1.9 ... fill_area_3 7.3.1.10 ... fill_area 7.3.1.11 ... fill_area_set_3 7.3.1.12 ... fill_area_set 7.3.1.13 ... cell_array_3 7.3.1.14 ... cell_array 7.3.2 ... primitive_attributes 7.3.2.4 ... text_attributes 7.3.2.4.6 ... character_height 7.3.2.4.7 ... character_up_vector 7.3.2.4.8 ... text_path 7.3.2.4.9 ... text_alignment 7.3.2.7 ... nameset_attributes 7.3.2.7.1 ... add_names_to_set 7.3.2.7.2 ... remove_names_from_set 7.3.3 ... modelling_transformation_elements 7.3.3.1 ... local_transformation_3 7.3.3.2 ... local_transformation 7.3.3.3 ... global_transformation_3 7.3.3.4 ... global_transformation 7.3.3.5 ... modelling_clipping_volume_3 7.3.3.6 ... modelling_clipping_volume 7.3.3.8 ... restore_modelling_clipping_volume 7.3.4 ... execute_structure LOCAL SUBROUTINES: SUBROUTINE ISSPF invokes the specified spatial search routine and issues pass or fail, depending on its agreement with the expected result. Always: structure #101 is searched, search ceiling is 1, modelling clip off, filter lists empty. SUBROUTINE ISSDIS invokes the 3D spatial search routine with the search distance set just below and above the theoretically correct distance. The only primitive to be searched is in structure #101. Thus, the search should first be unsuccessful, and then successful. ISSDIS issues pass or fail as a result of these two searches. SUBROUTINE ISSAB invokes the 3D spatial search routine with the search distance set just below and above the theoretically correct distance. Thus, the search should first be unsuccessful, and then successful. ISSAB issues pass or fail as a result of these two searches. SUBROUTINE STCEIL repeatedly invokes spatial search, using the found path of one search as the starting path for the next, and issues pass or fail, depending on whether the actual paths match those expected. SUBROUTINE ISSGEO tests whether ISS successfully detects the corners of a text extent rectangle. SUBROUTINE TX2DEX computes the expected lower-left and upper-right corner of a text extent rectangle, including the effect of text position and character-up vector, which are not taken into account by <inquire text extent>. REAL FUNCTION PTREGD computes the minimum distance from a 3D point to a planar 3D region. SUBROUTINE INVOL, given a 3D point and planar fill area, determines whether the point is within the normal projection of the area, and the distance of the point from the plane. INTEGER FUNCTION INAREA, given a 2D point and fill area, determines whether the point is within the area, on the edge, or outside. SUBROUTINE FLTRAN, given a set of attitude numbers for a plane, returns a 4 X 4 transformation matrix which rotates the plane so as to be parallel to the z=0 plane. This is useful for visualizing a planar 3D primitive. SUBROUTINE ISSFLT tests the effect of various filter lists on the behavior of ISS. It issues pass or fail depending on whether or not the actual result of ISS matches the expected result. All the parameters are encoded in character form, and thus must be translated before invoking ISS. SUBROUTINE SETFIL translates the character version of a filter list into the appropriate integer arrays.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.
You may inspect either the design or code for this program.