Reference shapes, as OpenFrames' frames of the same names: CoordinateAxes (axis lines with tick marks), LatLonGrid (latitude and longitude lines on an ellipsoid), RadialPlane (a transparent disk with circles and radial lines) and cones (PolyhedralCone, and its EllipticCone and RectangularCone: e.g. sensor fields of view); and (not in OpenFrames) Polyhedron, any surface of polygons or triangles, or a grid of points (e.g. a tube of trajectories), fixed in its frame, lit or not, opaque or translucent.
Each is a frame drawing in its own coordinates. Its drawing is made when a window first shows it and made again when a setting changes (also while shown; the new nodes are compiled and swapped in). Lines are vkframes' double-precision lines (widths in window units); tick marks are markers (MarkerArtist's shapes); surfaces are unlit and transparent, seen from both sides, and write no depth (as OpenFrames'), except a Polyhedron's when lit. Surfaces are made by one routine (surface_node), as their lines (line_node) and points (marker_node).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public, | parameter | :: | CONE_ALL | = | 7 |
CONE_SIDES + CONE_EDGES + CONE_BASE_OUTLINE |
| integer, | public, | parameter | :: | CONE_BASE_OUTLINE | = | 4 |
What a cone draws (OpenFrames' PolyhedralCone::DrawMode; combine with ior). |
| integer, | public, | parameter | :: | CONE_EDGES | = | 2 |
What a cone draws (OpenFrames' PolyhedralCone::DrawMode; combine with ior). |
| integer, | public, | parameter | :: | CONE_NONE | = | 0 |
What a cone draws (OpenFrames' PolyhedralCone::DrawMode; combine with ior). |
| integer, | public, | parameter | :: | CONE_SIDES | = | 1 |
What a cone draws (OpenFrames' PolyhedralCone::DrawMode; combine with ior). |
| integer, | public, | parameter | :: | POLY_ALL | = | 7 |
POLY_FACES + POLY_EDGES + POLY_VERTICES |
| integer, | public, | parameter | :: | POLY_EDGES | = | 2 |
What a Polyhedron draws (combine with ior). |
| integer, | public, | parameter | :: | POLY_FACES | = | 1 |
What a Polyhedron draws (combine with ior). |
| integer, | public, | parameter | :: | POLY_NONE | = | 0 |
What a Polyhedron draws (combine with ior). |
| integer, | public, | parameter | :: | POLY_VERTICES | = | 4 |
What a Polyhedron draws (combine with ior). |
The CoordinateAxes constructor: CoordinateAxes(...) makes one (see new_coordinate_axes for its
arguments).
Coordinate axes named name, of color color ([r, g, b] or [r, g, b,
a]), 1 long, with major ticks every 0.5 and minor every 0.25 (OpenFrames'
defaults).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The EllipticCone constructor: EllipticCone(...) makes one (see new_elliptic_cone for its
arguments).
An elliptic cone named name, of color color (sides and base outline drawn).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The LatLonGrid constructor: LatLonGrid(...) makes one (see new_lat_lon_grid for its
arguments).
A latitude/longitude grid named name, of color color, on a unit
sphere, every 30 degrees (OpenFrames' defaults).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The PolyhedralCone constructor: PolyhedralCone(...) makes one (see new_polyhedral_cone for its
arguments).
A polyhedral cone named name, of color color (its sides and lines):
3 vertices at clock angles 0, 120 and 240 degrees, cone angles 45
degrees, 1 long (OpenFrames' defaults).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The Polyhedron constructor: Polyhedron(...) makes one (see new_polyhedron for its
arguments).
A polyhedron named name, of color color (its faces, edges and
vertices), with no faces yet (set_faces, set_triangles or set_grid).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The RadialPlane constructor: RadialPlane(...) makes one (see new_radial_plane for its
arguments).
A radial plane named name (decorations of color color): radius 1,
circles every 0.5, radial lines every 30 degrees, light gray and
transparent (OpenFrames' defaults).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The RectangularCone constructor: RectangularCone(...) makes one (see new_rectangular_cone for its
arguments).
A rectangular cone named name, of color color.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
Coordinate axes with tick marks (OpenFrames' CoordinateAxes): lines from the origin along x, y and z, major and minor tick marks at their spacings, in the frame's color. Tick marks shrink beyond the axis length from the camera (OpenFrames' tick attenuation). The frame's own axes (arrows) are moved to the lines' ends when the length is set (as OpenFrames'); move them after that with move_x_axis, ..., or, for axes on a body, hide them (show_axes(NO_AXES)) and show the body's, which start at its surface.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private | :: | drawn | = | ALL_AXES |
axes drawn: an ior of X_AXIS, Y_AXIS, Z_AXIS |
|
| type(c_ptr), | private | :: | image | = | c_null_ptr |
tick image handle (null: none) |
|
| character(len=:), | private, | allocatable | :: | image_file |
tick image file ('' for none) |
||
| real(kind=wp), | private | :: | length_ | = | 1.0_wp |
axis length (scene units; default 1) |
|
| real(kind=wp), | private | :: | major | = | 0.5_wp |
major tick spacing (scene units; 0: none) |
|
| real(kind=wp), | private | :: | major_size | = | 8.0_wp |
major tick size (window units) |
|
| real(kind=wp), | private | :: | minor | = | 0.25_wp |
minor tick spacing (scene units; 0: none) |
|
| real(kind=wp), | private | :: | minor_size | = | 4.0_wp |
minor tick size (window units) |
|
| type(ShapeNodes), | private | :: | nodes |
the drawing |
|||
| integer, | private | :: | shape_ | = | MARKER_DISK |
tick shape: a MARKER_* shape |
|
| real(kind=wp), | private | :: | width_ | = | 1.0_wp |
axis lines' width (window units; default 1) |
The CoordinateAxes constructor: CoordinateAxes(...) makes one (see new_coordinate_axes for its
arguments).
| private function new_coordinate_axes (name, color) | Coordinate axes named |
| procedure, public :: add_child | |
| procedure, public :: attitude | |
| procedure, public :: axes_labels_shown | |
| procedure, public :: axes_shown | |
| procedure, public :: axis_label | |
| procedure, public :: axis_length | |
| procedure, public :: axis_width | |
| procedure, public :: bound => axes_bound | |
| procedure, public :: build_contents => axes_build_contents | |
| procedure, public :: child | |
| procedure, public :: child_index | |
| procedure, public :: color | |
| procedure, public :: contents_shown | |
| procedure, public :: detach | |
| procedure, public :: draw_axes | |
| procedure, public :: follow | |
| procedure, public :: follow_frame | |
| procedure, public :: follower | |
| procedure, public :: frame_info => axes_frame_info | |
| procedure, public :: frame_string | |
| procedure, public :: has_light_source | |
| procedure, public :: is_following | |
| procedure, public :: label_alignment | |
| procedure, public :: label_font | |
| procedure, public :: label_size | |
| procedure, public :: late_update | |
| procedure, public :: light_ambient | |
| procedure, public :: light_diffuse | |
| procedure, public :: light_source_enabled | |
| procedure, public :: light_specular | |
| procedure, public :: local_matrix | |
| procedure, public :: local_matrix_at | |
| procedure, public :: motion_key | |
| procedure, public :: move_x_axis | |
| procedure, public :: move_y_axis | |
| procedure, public :: move_z_axis | |
| procedure, public :: name | |
| procedure, public :: name_label_on_top | |
| procedure, public :: name_label_shown | |
| procedure, public :: node | |
| procedure, public :: num_children | |
| procedure, public :: num_parents | |
| procedure, public :: parent | |
| procedure, public :: parent_index | |
| procedure, public :: pick | |
| procedure, public :: pickable | |
| procedure, public :: position | |
| procedure, public :: position_of | |
| procedure, public :: realize | |
| procedure, public :: remove_child | |
| procedure, public :: reposition_axes | |
| procedure, public :: set_attitude | |
| procedure, public :: set_axis_length | |
| procedure, public :: set_axis_width | |
| procedure, public :: set_color => axes_set_color | |
| procedure, public :: set_draw_axes | |
| procedure, public :: set_label_alignment | |
| procedure, public :: set_label_font | |
| procedure, public :: set_label_size | |
| procedure, public :: set_light_ambient | |
| procedure, public :: set_light_diffuse | |
| procedure, public :: set_light_source_enabled | |
| procedure, public :: set_light_specular | |
| procedure, public :: set_name | |
| procedure, public :: set_name_label_on_top | |
| procedure, public :: set_pickable | |
| procedure, public :: set_position | |
| procedure, public :: set_tick_image | |
| procedure, public :: set_tick_shape | |
| procedure, public :: set_tick_size | |
| procedure, public :: set_tick_spacing | |
| procedure, public :: set_x_label | |
| procedure, public :: set_y_label | |
| procedure, public :: set_z_label | |
| procedure, public :: show_axes | |
| procedure, public :: show_axes_labels | |
| procedure, public :: show_contents | |
| procedure, public :: show_decorations | |
| procedure, public :: show_name_label | |
| procedure, public :: sync | |
| procedure, public :: tick_image | |
| procedure, public :: tick_shape | |
| procedure, public :: tick_size | |
| procedure, public :: tick_spacing | |
| procedure, public :: unfollow | |
| procedure, public :: update | |
| procedure, public :: world_matrix | |
| procedure, public :: world_matrix_at |
An elliptic cone (OpenFrames' EllipticCone): half-angles a along x and b
along y (set_primary_angles; default 60 and 30 degrees).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | private | :: | a | = | 60.0_wp*pi/180.0_wp |
half-angle along x (radians) |
|
| real(kind=wp), | private | :: | b | = | 30.0_wp*pi/180.0_wp |
half-angle along y (radians) |
The EllipticCone constructor: EllipticCone(...) makes one (see new_elliptic_cone for its
arguments).
| private function new_elliptic_cone (name, color) | An elliptic cone named |
| procedure, public :: add_child | |
| procedure, public :: attitude | |
| procedure, public :: axes_labels_shown | |
| procedure, public :: axes_shown | |
| procedure, public :: axis_label | |
| procedure, public :: bound => cone_bound | |
| procedure, public :: build_contents => cone_build_contents | |
| procedure, public :: child | |
| procedure, public :: child_index | |
| procedure, public :: clock_angles | |
| procedure, public :: color | |
| procedure, public :: cone_angles | |
| procedure, public :: cone_color | |
| procedure, public :: cone_length | |
| procedure, public :: contents_shown | |
| procedure, public :: detach | |
| procedure, public :: draw_mode | |
| procedure, public :: follow | |
| procedure, public :: follow_frame | |
| procedure, public :: follower | |
| procedure, public :: frame_info => elliptic_frame_info | |
| procedure, public :: frame_string | |
| procedure, public :: has_light_source | |
| procedure, public :: is_following | |
| procedure, public :: is_visible => elliptic_is_visible | |
| procedure, public :: label_alignment | |
| procedure, public :: label_font | |
| procedure, public :: label_size | |
| procedure, public :: late_update | |
| procedure, public :: light_ambient | |
| procedure, public :: light_diffuse | |
| procedure, public :: light_source_enabled | |
| procedure, public :: light_specular | |
| procedure, public :: line_color => cone_line_color | |
| procedure, public :: local_matrix | |
| procedure, public :: local_matrix_at | |
| procedure, public :: make_cone_look_at | |
| procedure, public :: motion_key | |
| procedure, public :: move_x_axis | |
| procedure, public :: move_y_axis | |
| procedure, public :: move_z_axis | |
| procedure, public :: name | |
| procedure, public :: name_label_on_top | |
| procedure, public :: name_label_shown | |
| procedure, public :: node | |
| procedure, public :: num_children | |
| procedure, public :: num_parents | |
| procedure, public :: parent | |
| procedure, public :: parent_index | |
| procedure, public :: pick | |
| procedure, public :: pickable | |
| procedure, public :: position | |
| procedure, public :: position_of | |
| procedure, public :: primary_angles => elliptic_primary_angles | |
| procedure, public :: realize | |
| procedure, public :: remove_child | |
| procedure, public :: reposition_axes | |
| procedure, public :: set_attitude | |
| procedure, public :: set_color | |
| procedure, public :: set_cone_color | |
| procedure, public :: set_cone_length | |
| procedure, public :: set_draw_mode | |
| procedure, public :: set_label_alignment | |
| procedure, public :: set_label_font | |
| procedure, public :: set_label_size | |
| procedure, public :: set_light_ambient | |
| procedure, public :: set_light_diffuse | |
| procedure, public :: set_light_source_enabled | |
| procedure, public :: set_light_specular | |
| procedure, public :: set_line_color => cone_set_line_color | |
| procedure, public :: set_name | |
| procedure, public :: set_name_label_on_top | |
| procedure, public :: set_pickable | |
| procedure, public :: set_position | |
| procedure, public :: set_primary_angles => elliptic_set_primary_angles | |
| procedure, public :: set_vertex_angles | |
| procedure, public :: set_x_label | |
| procedure, public :: set_y_label | |
| procedure, public :: set_z_label | |
| procedure, public :: show_axes | |
| procedure, public :: show_axes_labels | |
| procedure, public :: show_contents | |
| procedure, public :: show_decorations | |
| procedure, public :: show_name_label | |
| procedure, public :: sync | |
| procedure, public :: unfollow | |
| procedure, public :: update | |
| procedure, public :: world_matrix | |
| procedure, public :: world_matrix_at |
Latitude and longitude lines on an ellipsoid (OpenFrames' LatLonGrid):
at geodetic latitudes (matching a Sphere's texture), every lat_spacing
from the equator and every lon_spacing from the prime meridian (the
equator and prime meridian thicker), in the frame's color.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | private | :: | lat_spacing | = | 30.0_wp*pi/180.0_wp |
between latitude lines (radians; 0: none) |
|
| real(kind=wp), | private | :: | lon_spacing | = | 30.0_wp*pi/180.0_wp |
between meridians (radians; 0: none) |
|
| real(kind=wp), | private | :: | main_width | = | 3.0_wp |
equator's and prime meridian's width (window units) |
|
| type(ShapeNodes), | private | :: | nodes |
the drawing |
|||
| real(kind=wp), | private | :: | radii_(3) | = | 1.0_wp |
the ellipsoid's semi-axes (scene units) |
|
| real(kind=wp), | private | :: | width_ | = | 1.0_wp |
grid lines' width (window units) |
The LatLonGrid constructor: LatLonGrid(...) makes one (see new_lat_lon_grid for its
arguments).
| private function new_lat_lon_grid (name, color) | A latitude/longitude grid named |
| procedure, public :: add_child | |
| procedure, public :: attitude | |
| procedure, public :: axes_labels_shown | |
| procedure, public :: axes_shown | |
| procedure, public :: axis_label | |
| procedure, public :: bound => grid_bound | |
| procedure, public :: build_contents => grid_build_contents | |
| procedure, public :: child | |
| procedure, public :: child_index | |
| procedure, public :: color | |
| procedure, public :: contents_shown | |
| procedure, public :: detach | |
| procedure, public :: follow | |
| procedure, public :: follow_frame | |
| procedure, public :: follower | |
| procedure, public :: frame_info => grid_frame_info | |
| procedure, public :: frame_string | |
| procedure, public :: has_light_source | |
| procedure, public :: is_following | |
| procedure, public :: label_alignment | |
| procedure, public :: label_font | |
| procedure, public :: label_size | |
| procedure, public :: late_update | |
| procedure, public :: light_ambient | |
| procedure, public :: light_diffuse | |
| procedure, public :: light_source_enabled | |
| procedure, public :: light_specular | |
| procedure, public :: line_widths | |
| procedure, public :: local_matrix | |
| procedure, public :: local_matrix_at | |
| procedure, public :: motion_key | |
| procedure, public :: move_x_axis | |
| procedure, public :: move_y_axis | |
| procedure, public :: move_z_axis | |
| procedure, public :: name | |
| procedure, public :: name_label_on_top | |
| procedure, public :: name_label_shown | |
| procedure, public :: node | |
| procedure, public :: num_children | |
| procedure, public :: num_parents | |
| procedure, public :: parameters => grid_parameters | |
| procedure, public :: parent | |
| procedure, public :: parent_index | |
| procedure, public :: pick | |
| procedure, public :: pickable | |
| procedure, public :: position | |
| procedure, public :: position_of | |
| procedure, public :: realize | |
| procedure, public :: remove_child | |
| procedure, public :: reposition_axes | |
| procedure, public :: set_attitude | |
| procedure, public :: set_color => grid_set_color | |
| procedure, public :: set_label_alignment | |
| procedure, public :: set_label_font | |
| procedure, public :: set_label_size | |
| procedure, public :: set_light_ambient | |
| procedure, public :: set_light_diffuse | |
| procedure, public :: set_light_source_enabled | |
| procedure, public :: set_light_specular | |
| procedure, public :: set_line_widths | |
| procedure, public :: set_name | |
| procedure, public :: set_name_label_on_top | |
| procedure, public :: set_parameters => grid_set_parameters | |
| procedure, public :: set_pickable | |
| procedure, public :: set_position | |
| procedure, public :: set_x_label | |
| procedure, public :: set_y_label | |
| procedure, public :: set_z_label | |
| procedure, public :: show_axes | |
| procedure, public :: show_axes_labels | |
| procedure, public :: show_contents | |
| procedure, public :: show_decorations | |
| procedure, public :: show_name_label | |
| procedure, public :: sync | |
| procedure, public :: unfollow | |
| procedure, public :: update | |
| procedure, public :: world_matrix | |
| procedure, public :: world_matrix_at |
A cone of polygonal cross-section (OpenFrames' PolyhedralCone), with its apex at the origin and boresight along -z: vertex i at clock angle clock(i) (from +x toward +y) and cone angle cone(i) (from the boresight), cone_length along the boresight. Drawn as transparent sides, edges from the apex and the base outline (set_draw_mode).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | private, | allocatable | :: | clock(:) |
vertices' clock angles (radians, from +x toward +y) |
||
| real(kind=wp), | private, | allocatable | :: | cone(:) |
vertices' cone angles (radians, from the boresight) |
||
| real(kind=wp), | private | :: | cone_color_(4) | = | 1.0_wp |
sides' color [r, g, b, a] |
|
| real(kind=wp), | private | :: | length_ | = | 1.0_wp |
length along the boresight (scene units) |
|
| real(kind=wp), | private | :: | line_color_(4) | = | 1.0_wp |
edges' and base outline's color [r, g, b, a] |
|
| integer, | private | :: | mode | = | CONE_ALL |
an ior of CONE_SIDES, CONE_EDGES, CONE_BASE_OUTLINE |
|
| type(ShapeNodes), | private | :: | nodes |
the drawing |
|||
| real(kind=wp), | private | :: | width_ | = | 1.0_wp |
edges' and base outline's width (window units) |
The PolyhedralCone constructor: PolyhedralCone(...) makes one (see new_polyhedral_cone for its
arguments).
| private function new_polyhedral_cone (name, color) | A polyhedral cone named |
| procedure, public :: add_child | |
| procedure, public :: attitude | |
| procedure, public :: axes_labels_shown | |
| procedure, public :: axes_shown | |
| procedure, public :: axis_label | |
| procedure, public :: bound => cone_bound | |
| procedure, public :: build_contents => cone_build_contents | |
| procedure, public :: child | |
| procedure, public :: child_index | |
| procedure, public :: clock_angles | |
| procedure, public :: color | |
| procedure, public :: cone_angles | |
| procedure, public :: cone_color | |
| procedure, public :: cone_length | |
| procedure, public :: contents_shown | |
| procedure, public :: detach | |
| procedure, public :: draw_mode | |
| procedure, public :: follow | |
| procedure, public :: follow_frame | |
| procedure, public :: follower | |
| procedure, public :: frame_info => cone_frame_info | |
| procedure, public :: frame_string | |
| procedure, public :: has_light_source | |
| procedure, public :: is_following | |
| procedure, public :: is_visible => cone_is_visible | |
| procedure, public :: label_alignment | |
| procedure, public :: label_font | |
| procedure, public :: label_size | |
| procedure, public :: late_update | |
| procedure, public :: light_ambient | |
| procedure, public :: light_diffuse | |
| procedure, public :: light_source_enabled | |
| procedure, public :: light_specular | |
| procedure, public :: line_color => cone_line_color | |
| procedure, public :: local_matrix | |
| procedure, public :: local_matrix_at | |
| procedure, public :: make_cone_look_at | |
| procedure, public :: motion_key | |
| procedure, public :: move_x_axis | |
| procedure, public :: move_y_axis | |
| procedure, public :: move_z_axis | |
| procedure, public :: name | |
| procedure, public :: name_label_on_top | |
| procedure, public :: name_label_shown | |
| procedure, public :: node | |
| procedure, public :: num_children | |
| procedure, public :: num_parents | |
| procedure, public :: parent | |
| procedure, public :: parent_index | |
| procedure, public :: pick | |
| procedure, public :: pickable | |
| procedure, public :: position | |
| procedure, public :: position_of | |
| procedure, public :: realize | |
| procedure, public :: remove_child | |
| procedure, public :: reposition_axes | |
| procedure, public :: set_attitude | |
| procedure, public :: set_color | |
| procedure, public :: set_cone_color | |
| procedure, public :: set_cone_length | |
| procedure, public :: set_draw_mode | |
| procedure, public :: set_label_alignment | |
| procedure, public :: set_label_font | |
| procedure, public :: set_label_size | |
| procedure, public :: set_light_ambient | |
| procedure, public :: set_light_diffuse | |
| procedure, public :: set_light_source_enabled | |
| procedure, public :: set_light_specular | |
| procedure, public :: set_line_color => cone_set_line_color | |
| procedure, public :: set_name | |
| procedure, public :: set_name_label_on_top | |
| procedure, public :: set_pickable | |
| procedure, public :: set_position | |
| procedure, public :: set_vertex_angles | |
| procedure, public :: set_x_label | |
| procedure, public :: set_y_label | |
| procedure, public :: set_z_label | |
| procedure, public :: show_axes | |
| procedure, public :: show_axes_labels | |
| procedure, public :: show_contents | |
| procedure, public :: show_decorations | |
| procedure, public :: show_name_label | |
| procedure, public :: sync | |
| procedure, public :: unfollow | |
| procedure, public :: update | |
| procedure, public :: world_matrix | |
| procedure, public :: world_matrix_at |
A surface fixed in its frame (not in OpenFrames): vertices and faces, given as polygons (set_faces: e.g. a polyhedron's), triangles (set_triangles) or a grid of points (set_grid: e.g. a tube of trajectories, an invariant manifold). Drawn as faces, edges (the polygons' outlines, the triangles' sides, or the grid's lines) and vertices (set_draw_mode).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private, | allocatable | :: | edge(:,:) |
edges (2, k), vertex numbers |
||
| real(kind=wp), | private | :: | face_color_(4) | = | 1.0_wp |
faces' color [r, g, b, a] |
|
| real(kind=wp), | private | :: | line_color_(4) | = | 1.0_wp |
edges' color |
|
| logical, | private | :: | lit_ | = | .true. |
lit by the scene's lights (else unlit, transparent) |
|
| integer, | private | :: | mode | = | ior(POLY_FACES, POLY_EDGES) |
an ior of POLY_FACES, POLY_EDGES, POLY_VERTICES |
|
| type(ShapeNodes), | private | :: | nodes |
the drawing |
|||
| real(kind=wp), | private | :: | opacity_ | = | 1.0_wp |
the faces' (times their colors' alpha) |
|
| real(kind=wp), | private | :: | point_color_(4) | = | 1.0_wp |
vertices' color |
|
| real(kind=wp), | private | :: | point_size_ | = | 6.0_wp |
vertices' size (window units) |
|
| logical, | private | :: | smooth_ | = | .false. |
normals smooth across the vertices (else flat faces) |
|
| integer, | private, | allocatable | :: | tri(:,:) |
triangles (3, m), vertex numbers (1-based) |
||
| logical, | private | :: | two_sided_ | = | .true. |
both sides drawn (and lit) |
|
| real(kind=wp), | private, | allocatable | :: | v(:,:) |
vertices (3, n), frame coordinates |
||
| real(kind=wp), | private, | allocatable | :: | vertex_colors_(:,:) |
a color per vertex (4, n) (none: the face color) |
||
| real(kind=wp), | private | :: | width_ | = | 1.0_wp |
edges' width (window units) |
The Polyhedron constructor: Polyhedron(...) makes one (see new_polyhedron for its
arguments).
| private function new_polyhedron (name, color) | A polyhedron named |
| procedure, public :: add_child | |
| procedure, public :: attitude | |
| procedure, public :: axes_labels_shown | |
| procedure, public :: axes_shown | |
| procedure, public :: axis_label | |
| procedure, public :: bound => poly_bound | |
| procedure, public :: build_contents => poly_build_contents | |
| procedure, public :: child | |
| procedure, public :: child_index | |
| procedure, public :: color | |
| procedure, public :: contents_shown | |
| procedure, public :: detach | |
| procedure, public :: draw_mode => poly_draw_mode | |
| procedure, public :: face_color | |
| procedure, public :: follow | |
| procedure, public :: follow_frame | |
| procedure, public :: follower | |
| procedure, public :: frame_info => poly_frame_info | |
| procedure, public :: frame_string | |
| procedure, public :: has_light_source | |
| procedure, public :: has_vertex_colors | |
| procedure, public :: is_following | |
| procedure, public :: label_alignment | |
| procedure, public :: label_font | |
| procedure, public :: label_size | |
| procedure, public :: late_update | |
| procedure, public :: light_ambient | |
| procedure, public :: light_diffuse | |
| procedure, public :: light_source_enabled | |
| procedure, public :: light_specular | |
| procedure, public :: line_color => poly_line_color | |
| procedure, public :: line_width => poly_line_width | |
| procedure, public :: lit | |
| procedure, public :: local_matrix | |
| procedure, public :: local_matrix_at | |
| procedure, public :: motion_key | |
| procedure, public :: move_x_axis | |
| procedure, public :: move_y_axis | |
| procedure, public :: move_z_axis | |
| procedure, public :: name | |
| procedure, public :: name_label_on_top | |
| procedure, public :: name_label_shown | |
| procedure, public :: node | |
| procedure, public :: num_children | |
| procedure, public :: num_edges | |
| procedure, public :: num_parents | |
| procedure, public :: num_triangles | |
| procedure, public :: num_vertices | |
| procedure, public :: opacity => poly_opacity | |
| procedure, public :: parent | |
| procedure, public :: parent_index | |
| procedure, public :: pick | |
| procedure, public :: pickable | |
| procedure, public :: point_color | |
| procedure, public :: point_size | |
| procedure, public :: position | |
| procedure, public :: position_of | |
| procedure, public :: realize | |
| procedure, public :: remove_child | |
| procedure, public :: remove_vertex_colors | |
| procedure, public :: reposition_axes | |
| procedure, public :: set_attitude | |
| procedure, public :: set_color | |
| procedure, public :: set_draw_mode => poly_set_draw_mode | |
| procedure, public :: set_edges | |
| procedure, public :: set_face_color | |
| procedure, public :: set_faces | |
| procedure, public :: set_grid | |
| procedure, public :: set_label_alignment | |
| procedure, public :: set_label_font | |
| procedure, public :: set_label_size | |
| procedure, public :: set_light_ambient | |
| procedure, public :: set_light_diffuse | |
| procedure, public :: set_light_source_enabled | |
| procedure, public :: set_light_specular | |
| procedure, public :: set_line_color => poly_set_line_color | |
| procedure, public :: set_line_width => poly_set_line_width | |
| procedure, public :: set_lit | |
| procedure, public :: set_name | |
| procedure, public :: set_name_label_on_top | |
| procedure, public :: set_opacity => poly_set_opacity | |
| procedure, public :: set_pickable | |
| procedure, public :: set_point_color | |
| procedure, public :: set_point_size | |
| procedure, public :: set_position | |
| procedure, public :: set_smooth | |
| procedure, public :: set_triangles | |
| procedure, public :: set_two_sided | |
| procedure, public :: set_vertex_colors | |
| procedure, public :: set_vertices | |
| procedure, public :: set_x_label | |
| procedure, public :: set_y_label | |
| procedure, public :: set_z_label | |
| procedure, public :: show_axes | |
| procedure, public :: show_axes_labels | |
| procedure, public :: show_contents | |
| procedure, public :: show_decorations | |
| procedure, public :: show_name_label | |
| procedure, public :: smooth | |
| procedure, public :: sync | |
| procedure, public :: two_sided | |
| procedure, public :: unfollow | |
| procedure, public :: update | |
| procedure, public :: world_matrix | |
| procedure, public :: world_matrix_at |
A plane disk in the xy plane (OpenFrames' RadialPlane): transparent, with
circles every radial_spacing and radial lines every lon_spacing (the
one along +x thicker).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | private | :: | line_color_(4) | = | [1.0_wp, 1.0_wp, 1.0_wp, 0.2_wp] |
circles' and radial lines' color [r, g, b, a] |
|
| real(kind=wp), | private | :: | lon_spacing | = | 30.0_wp*pi/180.0_wp |
between radial lines (radians; 0: none) |
|
| type(ShapeNodes), | private | :: | nodes |
the drawing |
|||
| real(kind=wp), | private | :: | plane_color_(4) | = | [0.8_wp, 0.8_wp, 0.8_wp, 0.2_wp] |
the disk's color [r, g, b, a] |
|
| real(kind=wp), | private | :: | radial_spacing | = | 0.5_wp |
between circles (scene units; 0: none) |
|
| real(kind=wp), | private | :: | radius_ | = | 1.0_wp |
the disk's radius (scene units) |
The RadialPlane constructor: RadialPlane(...) makes one (see new_radial_plane for its
arguments).
| private function new_radial_plane (name, color) | A radial plane named |
| procedure, public :: add_child | |
| procedure, public :: attitude | |
| procedure, public :: axes_labels_shown | |
| procedure, public :: axes_shown | |
| procedure, public :: axis_label | |
| procedure, public :: bound => plane_bound | |
| procedure, public :: build_contents => plane_build_contents | |
| procedure, public :: child | |
| procedure, public :: child_index | |
| procedure, public :: color | |
| procedure, public :: contents_shown | |
| procedure, public :: detach | |
| procedure, public :: follow | |
| procedure, public :: follow_frame | |
| procedure, public :: follower | |
| procedure, public :: frame_info => plane_frame_info | |
| procedure, public :: frame_string | |
| procedure, public :: has_light_source | |
| procedure, public :: is_following | |
| procedure, public :: label_alignment | |
| procedure, public :: label_font | |
| procedure, public :: label_size | |
| procedure, public :: late_update | |
| procedure, public :: light_ambient | |
| procedure, public :: light_diffuse | |
| procedure, public :: light_source_enabled | |
| procedure, public :: light_specular | |
| procedure, public :: line_color => plane_line_color | |
| procedure, public :: local_matrix | |
| procedure, public :: local_matrix_at | |
| procedure, public :: motion_key | |
| procedure, public :: move_x_axis | |
| procedure, public :: move_y_axis | |
| procedure, public :: move_z_axis | |
| procedure, public :: name | |
| procedure, public :: name_label_on_top | |
| procedure, public :: name_label_shown | |
| procedure, public :: node | |
| procedure, public :: num_children | |
| procedure, public :: num_parents | |
| procedure, public :: parameters => plane_parameters | |
| procedure, public :: parent | |
| procedure, public :: parent_index | |
| procedure, public :: pick | |
| procedure, public :: pickable | |
| procedure, public :: plane_color | |
| procedure, public :: position | |
| procedure, public :: position_of | |
| procedure, public :: realize | |
| procedure, public :: remove_child | |
| procedure, public :: reposition_axes | |
| procedure, public :: set_attitude | |
| procedure, public :: set_color | |
| procedure, public :: set_label_alignment | |
| procedure, public :: set_label_font | |
| procedure, public :: set_label_size | |
| procedure, public :: set_light_ambient | |
| procedure, public :: set_light_diffuse | |
| procedure, public :: set_light_source_enabled | |
| procedure, public :: set_light_specular | |
| procedure, public :: set_line_color => plane_set_line_color | |
| procedure, public :: set_name | |
| procedure, public :: set_name_label_on_top | |
| procedure, public :: set_parameters => plane_set_parameters | |
| procedure, public :: set_pickable | |
| procedure, public :: set_plane_color | |
| procedure, public :: set_position | |
| procedure, public :: set_x_label | |
| procedure, public :: set_y_label | |
| procedure, public :: set_z_label | |
| procedure, public :: show_axes | |
| procedure, public :: show_axes_labels | |
| procedure, public :: show_contents | |
| procedure, public :: show_decorations | |
| procedure, public :: show_name_label | |
| procedure, public :: sync | |
| procedure, public :: unfollow | |
| procedure, public :: update | |
| procedure, public :: world_matrix | |
| procedure, public :: world_matrix_at |
A rectangular cone (OpenFrames' RectangularCone): half-angles x and y
(set_primary_angles; default 60 and 30 degrees).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | private | :: | x | = | 60.0_wp*pi/180.0_wp |
half-angle along x (radians) |
|
| real(kind=wp), | private | :: | y | = | 30.0_wp*pi/180.0_wp |
half-angle along y (radians) |
The RectangularCone constructor: RectangularCone(...) makes one (see new_rectangular_cone for its
arguments).
| private function new_rectangular_cone (name, color) | A rectangular cone named |
| procedure, public :: add_child | |
| procedure, public :: attitude | |
| procedure, public :: axes_labels_shown | |
| procedure, public :: axes_shown | |
| procedure, public :: axis_label | |
| procedure, public :: bound => cone_bound | |
| procedure, public :: build_contents => cone_build_contents | |
| procedure, public :: child | |
| procedure, public :: child_index | |
| procedure, public :: clock_angles | |
| procedure, public :: color | |
| procedure, public :: cone_angles | |
| procedure, public :: cone_color | |
| procedure, public :: cone_length | |
| procedure, public :: contents_shown | |
| procedure, public :: detach | |
| procedure, public :: draw_mode | |
| procedure, public :: follow | |
| procedure, public :: follow_frame | |
| procedure, public :: follower | |
| procedure, public :: frame_info => rect_frame_info | |
| procedure, public :: frame_string | |
| procedure, public :: has_light_source | |
| procedure, public :: is_following | |
| procedure, public :: is_visible => cone_is_visible | |
| procedure, public :: label_alignment | |
| procedure, public :: label_font | |
| procedure, public :: label_size | |
| procedure, public :: late_update | |
| procedure, public :: light_ambient | |
| procedure, public :: light_diffuse | |
| procedure, public :: light_source_enabled | |
| procedure, public :: light_specular | |
| procedure, public :: line_color => cone_line_color | |
| procedure, public :: local_matrix | |
| procedure, public :: local_matrix_at | |
| procedure, public :: make_cone_look_at | |
| procedure, public :: motion_key | |
| procedure, public :: move_x_axis | |
| procedure, public :: move_y_axis | |
| procedure, public :: move_z_axis | |
| procedure, public :: name | |
| procedure, public :: name_label_on_top | |
| procedure, public :: name_label_shown | |
| procedure, public :: node | |
| procedure, public :: num_children | |
| procedure, public :: num_parents | |
| procedure, public :: parent | |
| procedure, public :: parent_index | |
| procedure, public :: pick | |
| procedure, public :: pickable | |
| procedure, public :: position | |
| procedure, public :: position_of | |
| procedure, public :: primary_angles => rect_primary_angles | |
| procedure, public :: realize | |
| procedure, public :: remove_child | |
| procedure, public :: reposition_axes | |
| procedure, public :: set_attitude | |
| procedure, public :: set_color | |
| procedure, public :: set_cone_color | |
| procedure, public :: set_cone_length | |
| procedure, public :: set_draw_mode | |
| procedure, public :: set_label_alignment | |
| procedure, public :: set_label_font | |
| procedure, public :: set_label_size | |
| procedure, public :: set_light_ambient | |
| procedure, public :: set_light_diffuse | |
| procedure, public :: set_light_source_enabled | |
| procedure, public :: set_light_specular | |
| procedure, public :: set_line_color => cone_set_line_color | |
| procedure, public :: set_name | |
| procedure, public :: set_name_label_on_top | |
| procedure, public :: set_pickable | |
| procedure, public :: set_position | |
| procedure, public :: set_primary_angles => rect_set_primary_angles | |
| procedure, public :: set_vertex_angles | |
| procedure, public :: set_x_label | |
| procedure, public :: set_y_label | |
| procedure, public :: set_z_label | |
| procedure, public :: show_axes | |
| procedure, public :: show_axes_labels | |
| procedure, public :: show_contents | |
| procedure, public :: show_decorations | |
| procedure, public :: show_name_label | |
| procedure, public :: sync | |
| procedure, public :: unfollow | |
| procedure, public :: update | |
| procedure, public :: world_matrix | |
| procedure, public :: world_matrix_at |
A shape's nodes: made under the frame's contents, replaced when the shape changes.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(c_ptr), | public | :: | contents | = | c_null_ptr |
the frame's contents group (null until built) |
|
| type(c_ptr), | public | :: | shape | = | c_null_ptr |
the switch now shown (null: none) |
|
| logical, | public | :: | shown | = | .false. |
built for a window: rebuilt nodes are compiled |
| procedure, public :: replace |
What kind of frame this is: 'CoordinateAxes'.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(in) | :: | self |
The axes' length (scene units).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(in) | :: | self |
The axis lines' width (window units).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(in) | :: | self |
The vertices' clock angles (radians).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(in) | :: | self |
Points along a closed curve, as separate segments: pairs (p(i), p(i+1)).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | p(:,:) |
(3, n) points of the curve |
The vertices' cone angles (radians).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(in) | :: | self |
The sides' color [r, g, b, a].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(in) | :: | self |
What kind of frame this is: 'PolyhedralCone'.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(in) | :: | self |
Whether point (in the cone's frame) is inside the cone, between
distances min_distance and max_distance along the boresight
(defaults 0 and unlimited): inside the polygon of the vertices' directions
(OpenFrames' isVisible; its PolyhedralCone always answers false).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(in) | :: | self | |||
| real(kind=wp), | intent(in) | :: | point(3) |
in the cone's frame (scene units) |
||
| real(kind=wp), | intent(in), | optional | :: | min_distance |
along the boresight (scene units) |
|
| real(kind=wp), | intent(in), | optional | :: | max_distance |
along the boresight (scene units) |
The cone's length along the boresight (scene units).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(in) | :: | self |
The edges' and base outline's color [r, g, b, a].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(in) | :: | self |
Which axes are drawn: an ior of X_AXIS, Y_AXIS, Z_AXIS.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(in) | :: | self |
What is drawn: an ior of CONE_SIDES, CONE_EDGES, CONE_BASE_OUTLINE.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(in) | :: | self |
What kind of frame this is: 'EllipticCone'.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(EllipticCone), | intent(in) | :: | self |
Inside the elliptic cone (exactly; OpenFrames' EllipticCone::isVisible).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(EllipticCone), | intent(in) | :: | self | |||
| real(kind=wp), | intent(in) | :: | point(3) |
in the cone's frame (scene units) |
||
| real(kind=wp), | intent(in), | optional | :: | min_distance |
along the boresight (scene units) |
|
| real(kind=wp), | intent(in), | optional | :: | max_distance |
along the boresight (scene units) |
The faces' color [r, g, b, a].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
What kind of frame this is: 'LatLonGrid'.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(LatLonGrid), | intent(in) | :: | self |
Whether the faces have a color per vertex.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
Along the boresight (-z) between the distances (a point ahead of the apex).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | point(3) |
in the cone's frame (scene units) |
||
| real(kind=wp), | intent(in), | optional | :: | min_distance |
along the boresight (scene units) |
|
| real(kind=wp), | intent(in), | optional | :: | max_distance |
along the boresight (scene units) |
A line node through points xyz(3, n): a strip, or separate segments (points 1-2, 3-4, ...).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | xyz(:,:) |
(3, n) points |
||
| real(kind=wp), | intent(in) | :: | rgba(4) |
color [r, g, b, a] (0 to 1) |
||
| real(kind=wp), | intent(in) | :: | width |
line width (window units) |
||
| logical, | intent(in) | :: | segments |
separate segments (else a strip) |
Whether the faces are lit.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
A marker node at points xyz(3, n), px window units (MarkerArtist's
shapes and attenuation).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | xyz(:,:) |
(3, n) points |
||
| real(kind=wp), | intent(in) | :: | rgba(4) |
color [r, g, b, a] (0 to 1) |
||
| real(kind=wp), | intent(in) | :: | px |
marker size (window units) |
||
| integer, | intent(in) | :: | shape |
a MARKER_* shape |
||
| real(kind=wp), | intent(in) | :: | radius |
markers shrink beyond this camera distance (scene units) |
||
| type(c_ptr), | intent(in) | :: | image |
image for MARKER_IMAGE (null: none) |
Coordinate axes named name, of color color ([r, g, b] or [r, g, b,
a]), 1 long, with major ticks every 0.5 and minor every 0.25 (OpenFrames'
defaults).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
An elliptic cone named name, of color color (sides and base outline drawn).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
A latitude/longitude grid named name, of color color, on a unit
sphere, every 30 degrees (OpenFrames' defaults).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
A polyhedral cone named name, of color color (its sides and lines):
3 vertices at clock angles 0, 120 and 240 degrees, cone angles 45
degrees, 1 long (OpenFrames' defaults).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
A polyhedron named name, of color color (its faces, edges and
vertices), with no faces yet (set_faces, set_triangles or set_grid).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
A radial plane named name (decorations of color color): radius 1,
circles every 0.5, radial lines every 30 degrees, light gray and
transparent (OpenFrames' defaults).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
A rectangular cone named name, of color color.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | name |
the frame's name |
||
| real(kind=wp), | intent(in), | optional | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The number of edges.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
The number of triangles drawn (polygons: as fans).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
The number of vertices.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
Points along an open curve, as separate segments.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | p(:,:) |
(3, n) points of the curve |
The plane's color [r, g, b, a].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RadialPlane), | intent(in) | :: | self |
What kind of frame this is: 'RadialPlane'.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RadialPlane), | intent(in) | :: | self |
The lines' color [r, g, b, a].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RadialPlane), | intent(in) | :: | self |
The vertices' color [r, g, b, a].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
The vertices' size (window units).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
What is drawn: an ior of POLY_FACES, POLY_EDGES, POLY_VERTICES.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
What kind of frame this is: 'Polyhedron'.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
The edges' color [r, g, b, a].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
The edges' width (window units).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
The faces' opacity.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
What kind of frame this is: 'RectangularCone'.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RectangularCone), | intent(in) | :: | self |
Draw the ticks as an image (OpenFrames' setTickImage; found with find_data_file; '' for disks again). False if it cannot be read.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self | |||
| character(len=*), | intent(in) | :: | file |
image file ('' for disks) |
Which side of the line from a to b q is on: > 0 left, < 0 right, 0 on it (twice the signed area of the triangle a, b, q).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | a(2) |
the line's two points, and the point tested |
||
| real(kind=wp), | intent(in) | :: | b(2) |
the line's two points, and the point tested |
||
| real(kind=wp), | intent(in) | :: | q(2) |
the line's two points, and the point tested |
Whether the shading is smooth.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
A surface of triangles idx(3, m) (1-based) through points xyz(3, n), of
color rgba: unlit and transparent (seen from both sides, writing no
depth: planes, cones' sides), or, given normals, lit by the scene's
lights: opaque, or translucent if an alpha is below 1 (drawn after the
opaque scene, sorted by depth by the bounding sphere sphere);
two_sided: both faces drawn and lit. colors: a color per vertex
(4, n), times rgba.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | xyz(:,:) |
(3, n) vertices |
||
| integer, | intent(in) | :: | idx(:,:) |
(3, m) triangles, vertex numbers (1-based) |
||
| real(kind=wp), | intent(in) | :: | rgba(4) |
color [r, g, b, a] (0 to 1) |
||
| real(kind=wp), | intent(in), | optional | :: | normals(:,:) |
(3, n): lit |
|
| real(kind=wp), | intent(in), | optional | :: | colors(:,:) |
(4, n) |
|
| logical, | intent(in), | optional | :: | two_sided |
(lit) both faces (default: front only) |
|
| real(kind=wp), | intent(in), | optional | :: | sphere(4) |
(lit, translucent) center and radius |
The point at geodetic latitude lat and longitude lon on the ellipsoid (OpenFrames' LatLonGrid formula: the surface point whose normal has those angles).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | r(3) |
semi-axes (scene units) |
||
| real(kind=wp), | intent(in) | :: | lat |
radians |
||
| real(kind=wp), | intent(in) | :: | lon |
radians |
The tick image file ('' for none).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(in) | :: | self |
Tick shape: a MARKER_* shape.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(in) | :: | self |
Whether both sides are drawn.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self |
Edges (2, k) of vertex numbers (1 to n), each once whichever its direction (sorted by their smaller vertex, then the larger).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | pairs(:,:) |
(2, k) vertex numbers, in either order |
||
| integer, | intent(in) | :: | n |
the number of vertices |
A triangle's unit normal (counterclockwise: its front), or +z if it has no area.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | a(3) |
the triangle's vertices |
||
| real(kind=wp), | intent(in) | :: | b(3) |
the triangle's vertices |
||
| real(kind=wp), | intent(in) | :: | c(3) |
the triangle's vertices |
Normals per vertex: the faces' around it, weighted by their areas.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | v(:,:) |
(3, n) vertices |
||
| integer, | intent(in) | :: | tri(:,:) |
(3, m) triangles, vertex numbers (1-based) |
Add child to group (its handle is not kept).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(c_ptr), | intent(in) | :: | group |
the group, and a node to add to it |
||
| type(c_ptr), | intent(in) | :: | child |
the group, and a node to add to it |
Append points b to a (allocatable, (3, n)).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout), | allocatable | :: | a(:,:) |
(3, n) points (unallocated: none) |
|
| real(kind=wp), | intent(in) | :: | b(:,:) |
(3, m) points to append |
The bounding sphere: the origin, radius the axis length.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | center(3) |
the bounding sphere, frame coordinates (scene units) |
||
| real(kind=wp), | intent(out) | :: | radius |
the bounding sphere, frame coordinates (scene units) |
Draw the axes under group (the contents); with a window's viewer, later
drawings are compiled.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self | |||
| type(c_ptr), | intent(in) | :: | viewer |
a window's viewer (null: headless) |
||
| type(c_ptr), | intent(in) | :: | group |
the frame's contents group |
The axes' color (lines and ticks).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The bound of the apex and the base.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | center(3) |
the bounding sphere, frame coordinates (scene units) |
||
| real(kind=wp), | intent(out) | :: | radius |
the bounding sphere, frame coordinates (scene units) |
Draw the cone under group (the contents); with a window's viewer, later
drawings are compiled.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(inout) | :: | self | |||
| type(c_ptr), | intent(in) | :: | viewer |
a window's viewer (null: headless) |
||
| type(c_ptr), | intent(in) | :: | group |
the frame's contents group |
The edges' and base outline's color.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
No colors per vertex.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(Polyhedron), | intent(inout) | :: | self |
The half-angles along x (a) and y (b), radians.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(EllipticCone), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | a |
radians |
||
| real(kind=wp), | intent(out) | :: | b |
radians |
The half-angles along x (a) and y (b), radians (0 to 90 degrees).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(EllipticCone), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | a |
radians |
||
| real(kind=wp), | intent(in) | :: | b |
radians |
120 vertices (every 3 degrees), cone angle a b / sqrt(b^2 cos^2 + a^2 sin^2) (OpenFrames' createEllipticCone).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(EllipticCone), | intent(inout) | :: | self |
The bounding sphere: the origin, radius the largest semi-axis.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(LatLonGrid), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | center(3) |
the bounding sphere, frame coordinates (scene units) |
||
| real(kind=wp), | intent(out) | :: | radius |
the bounding sphere, frame coordinates (scene units) |
Draw the grid under group (the contents); with a window's viewer, later
drawings are compiled.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(LatLonGrid), | intent(inout) | :: | self | |||
| type(c_ptr), | intent(in) | :: | viewer |
a window's viewer (null: headless) |
||
| type(c_ptr), | intent(in) | :: | group |
the frame's contents group |
The ellipsoid's semi-axes and the line spacings, as OpenFrames' getParameters.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(LatLonGrid), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | radius_x |
scene units |
||
| real(kind=wp), | intent(out) | :: | radius_y |
scene units |
||
| real(kind=wp), | intent(out) | :: | radius_z |
scene units |
||
| real(kind=wp), | intent(out) | :: | lat_spacing |
radians |
||
| real(kind=wp), | intent(out) | :: | lon_spacing |
radians |
The lines' color.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(LatLonGrid), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The ellipsoid's semi-axes (> 0; e.g. a Sphere's radii, a little larger to draw above its surface) and the line spacings (radians; 0 for no latitude or longitude lines), as OpenFrames' setParameters.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(LatLonGrid), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | radius_x |
scene units (<= 0: unchanged) |
||
| real(kind=wp), | intent(in) | :: | radius_y |
scene units (<= 0: unchanged) |
||
| real(kind=wp), | intent(in) | :: | radius_z |
scene units (<= 0: unchanged) |
||
| real(kind=wp), | intent(in) | :: | lat_spacing |
radians (< 0: unchanged) |
||
| real(kind=wp), | intent(in) | :: | lon_spacing |
radians (< 0: unchanged) |
Widths of the grid lines and of the equator and prime meridian (window units).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(LatLonGrid), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | width |
window units |
||
| real(kind=wp), | intent(out) | :: | main_width |
window units |
Make the axes' lines and tick marks, in place of the old (nothing before build_contents).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self |
Make the sides, edges and base outline (those the draw mode says), in place of the old.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(inout) | :: | self |
Place the cone's apex at apex (in the parent frame) with its boresight
along dir and its +y axis toward up (OpenFrames' makeConeLookAt).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | apex(3) |
parent frame coordinates (scene units) |
||
| real(kind=wp), | intent(in) | :: | dir(3) |
boresight direction (any length > 0) |
||
| real(kind=wp), | intent(in) | :: | up(3) |
toward the cone's +y axis (any length) |
Make the grid's lines (circles in 1 degree steps, meridians in 0.5 degree steps), in place of the old.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(LatLonGrid), | intent(inout) | :: | self |
Make the disk, its circles and its radial lines (1 degree steps), in place of the old.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(RadialPlane), | intent(inout) | :: | self |
The polyhedron's nodes, made again (if shown).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self |
The frame's own axes (arrows) at length along x, y and z, half as long.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ReferenceFrame), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | length |
scene units |
The frame's own axes (arrows) at the ellipsoid's semi-axes, half as long.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(LatLonGrid), | intent(inout) | :: | self |
The bounding sphere: the origin, radius the plane's radius.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RadialPlane), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | center(3) |
the bounding sphere, frame coordinates (scene units) |
||
| real(kind=wp), | intent(out) | :: | radius |
the bounding sphere, frame coordinates (scene units) |
Draw the plane under group (the contents); with a window's viewer, later
drawings are compiled.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RadialPlane), | intent(inout) | :: | self | |||
| type(c_ptr), | intent(in) | :: | viewer |
a window's viewer (null: headless) |
||
| type(c_ptr), | intent(in) | :: | group |
the frame's contents group |
The plane's radius, circle spacing and radial line spacing, as OpenFrames' getParameters.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RadialPlane), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | radius |
scene units |
||
| real(kind=wp), | intent(out) | :: | radial_spacing |
scene units |
||
| real(kind=wp), | intent(out) | :: | lon_spacing |
radians |
The lines' color (default white, 0.2 opaque).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RadialPlane), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The plane's radius (> 0), circle spacing and radial line spacing (radians; 0 for none), as OpenFrames' setParameters.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RadialPlane), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | radius |
scene units (<= 0: unchanged) |
||
| real(kind=wp), | intent(in) | :: | radial_spacing |
scene units (< 0: unchanged) |
||
| real(kind=wp), | intent(in) | :: | lon_spacing |
radians (< 0: unchanged) |
The bounding sphere: about the vertices' box's center.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | center(3) |
the bounding sphere, frame coordinates (scene units) |
||
| real(kind=wp), | intent(out) | :: | radius |
the bounding sphere, frame coordinates (scene units) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| type(c_ptr), | intent(in) | :: | viewer |
a window's viewer (null: headless) |
||
| type(c_ptr), | intent(in) | :: | group |
the frame's contents group |
What to draw: an ior of POLY_FACES, POLY_EDGES, POLY_VERTICES (default faces and edges).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| integer, | intent(in) | :: | mode |
an ior of POLY_FACES, POLY_EDGES, POLY_VERTICES |
The edges' color.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The edges' width (window units; default 1).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | width |
window units |
The faces' opacity (0 to 1; default 1, opaque): below 1 translucent.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | opacity |
0 to 1 (1: opaque) |
The half-angles along x and y, radians.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RectangularCone), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | x |
radians |
||
| real(kind=wp), | intent(out) | :: | y |
radians |
The half-angles along x and y, radians (0 to 90 degrees).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RectangularCone), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | x |
radians |
||
| real(kind=wp), | intent(in) | :: | y |
radians |
The 4 corners (OpenFrames' createRectangularCone).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(RectangularCone), | intent(inout) | :: | self |
The face color again, for every vertex.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self |
Show new (a switch made by the shape) in place of the shape's current
nodes; compiled first if the window already runs.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ShapeNodes), | intent(inout) | :: | self | |||
| type(c_ptr), | intent(in) | :: | new |
a switch made by the shape (null: none) |
The axes' length (scene units, >= 0; default 1); the frame's own axes are moved to the lines' ends.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | length |
scene units (< 0: ignored) |
The axis lines' width (window units; default 1).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | width |
window units (<= 0: ignored) |
The sides' color ([r, g, b] or [r, g, b, a]; their alpha makes them transparent).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The cone's length along the boresight (> 0; default 1).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | length |
scene units (<= 0: ignored) |
Which axes to draw: an ior of X_AXIS, Y_AXIS, Z_AXIS.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self | |||
| integer, | intent(in) | :: | axes |
an ior of X_AXIS, Y_AXIS, Z_AXIS |
What to draw: an ior of CONE_SIDES, CONE_EDGES, CONE_BASE_OUTLINE.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(inout) | :: | self | |||
| integer, | intent(in) | :: | mode |
an ior of CONE_SIDES, CONE_EDGES, CONE_BASE_OUTLINE |
The edges drawn (2, k) (vertex numbers), in place of the faces' (after set_faces, set_triangles or set_grid).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| integer, | intent(in) | :: | edges(:,:) |
(2, k) vertex numbers (1-based) |
The faces' color (the alpha times the opacity).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
Faces given as polygons: faces the vertex numbers (1-based) of each
polygon in turn, sizes how many each has (>= 3; convex, or at least
star-shaped from its first vertex: drawn as a fan of triangles from
it); the edges are the polygons' sides. E.g. a cube: 8 vertices, 6
faces of 4. A face's front: its vertices counterclockwise.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | vertices(:,:) |
(3, n), frame coordinates |
||
| integer, | intent(in) | :: | faces(:) |
(sum(sizes)) vertex numbers |
||
| integer, | intent(in) | :: | sizes(:) |
each face's number of vertices |
Faces given as a grid of points (3, nu, nv): quadrilaterals between
neighbours (two triangles each), joined around if closed_u (the last
point i to the first, for each j; e.g. a tube's circumference) or
closed_v. The edges: the grid's lines, those of constant i (along j)
every lines(1) and of constant j (along i) every lines(2) (default:
every one; 0 for none).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | points(:,:,:) |
(3, nu, nv), frame coordinates |
||
| logical, | intent(in), | optional | :: | closed_u |
joined around in i, in j (default false) |
|
| logical, | intent(in), | optional | :: | closed_v |
joined around in i, in j (default false) |
|
| integer, | intent(in), | optional | :: | lines(2) |
edges every lines(1) in i, lines(2) in j (default 1; 0: none) |
Widths of the grid lines and of the equator and prime meridian (window units; defaults 1 and 3).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(LatLonGrid), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | width |
window units (<= 0: unchanged) |
||
| real(kind=wp), | intent(in) | :: | main_width |
window units (<= 0: unchanged) |
Faces lit by the scene's lights (the default), or unlit (their color as is, transparent as a cone's sides: writing no depth).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| logical, | intent(in) | :: | lit |
true: lit; false: unlit and transparent |
The plane's color ([r, g, b] or [r, g, b, a]; default 0.8 gray, 0.2 opaque).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(RadialPlane), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The vertices' color (POLY_VERTICES).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | color(:) |
[r, g, b] or [r, g, b, a] (0 to 1) |
The vertices' size (window units; default 6).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | size_ |
window units |
Shading smooth across the vertices (normals averaged over the faces around each: a curved surface, e.g. a grid's), or flat faces (the default: a polyhedron's).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| logical, | intent(in) | :: | smooth |
true: smooth shading; false: flat faces |
Tick shape: a MARKER_* shape (default MARKER_DISK; OpenFrames' setTickShader with its marker shaders).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self | |||
| integer, | intent(in) | :: | shape |
a MARKER_* shape |
Major and minor tick sizes (window units; default 8 and 4).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | major |
window units (<= 0: unchanged) |
||
| real(kind=wp), | intent(in) | :: | minor |
window units (<= 0: unchanged) |
Major and minor tick spacings (>= 0; 0 for none).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | major |
scene units (< 0: unchanged) |
||
| real(kind=wp), | intent(in) | :: | minor |
scene units (< 0: unchanged) |
Faces given as triangles (3, m) of vertex numbers (1-based); the edges are their sides (each once).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | vertices(:,:) |
(3, n), frame coordinates |
||
| integer, | intent(in) | :: | triangles(:,:) |
(3, m) |
Both sides of the faces drawn and lit (the default: open surfaces), or only their fronts (a closed surface, its faces counterclockwise seen from outside: translucent, its far side isn't drawn through it).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| logical, | intent(in) | :: | two_sided |
true: both sides; false: fronts only |
The vertices: clock angles (from +x toward +y) and cone angles (from the boresight, -z; below 90 degrees), radians, the same number of each (>= 3).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(PolyhedralCone), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | clock(:) |
radians |
||
| real(kind=wp), | intent(in) | :: | cone(:) |
radians |
A color per vertex (4, n) or (3, n) ([r, g, b(, a)], 0 to 1), for the faces, blended across them (in place of the face color; the opacity still applies). Dropped when the faces are set again.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | colors(:,:) |
(4, n) or (3, n): [r, g, b(, a)] (0 to 1) |
Move the vertices (3, n), keeping the faces and edges (as many as before; e.g. a surface changing in time).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Polyhedron), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | vertices(:,:) |
(3, n), frame coordinates (as many as before) |
Sort keys, increasing (a bottom-up merge sort).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int64), | intent(inout) | :: | a(:) |
the keys |
Major and minor tick sizes (window units).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | major |
window units |
||
| real(kind=wp), | intent(out) | :: | minor |
window units |
Major and minor tick spacings.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(CoordinateAxes), | intent(in) | :: | self | |||
| real(kind=wp), | intent(out) | :: | major |
scene units |
||
| real(kind=wp), | intent(out) | :: | minor |
scene units |
A sphere around points v (3, n): their box's center, out to the farthest (zero for none).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | v(:,:) |
(3, n) points |
||
| real(kind=wp), | intent(out) | :: | center(3) |
the sphere's center and radius |
||
| real(kind=wp), | intent(out) | :: | radius |
the sphere's center and radius |