Geometry generation for vkframes: meshes and lines computed in Fortran and written into the rendering layer's buffers.
An arrow mesh node (see arrow) of color rgba, with 24 segments by
default. Null on failure.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=c_double), | intent(in) | :: | base(3) |
the arrow's base, and its axis (need not be unit length) |
||
| real(kind=c_double), | intent(in) | :: | direction(3) |
the arrow's base, and its axis (need not be unit length) |
||
| real(kind=c_double), | intent(in) | :: | body_length |
lengths along the axis, and radii |
||
| real(kind=c_double), | intent(in) | :: | head_length |
lengths along the axis, and radii |
||
| real(kind=c_double), | intent(in) | :: | body_radius |
lengths along the axis, and radii |
||
| real(kind=c_double), | intent(in) | :: | head_radius |
lengths along the axis, and radii |
||
| real(kind=c_float), | intent(in), | dimension(4) | :: | rgba |
color [r, g, b, a] (0 to 1) |
|
| integer, | intent(in), | optional | :: | n_segments |
segments around (default 24, at least 3) |
An ellipsoid mesh node with semi-axes radii (x, y, z) and color (rgba,
multiplying the texture), with an optional equirectangular texture and
night texture (image handles; the night texture shows where the light
is weak). n_lon and n_lat default to 128 and 64 segments. With
translucent, a translucent surface (its material's alpha; drawn after
the opaque scene, sorted by depth). Null on failure.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=c_double), | intent(in), | dimension(3) | :: | radii |
semi-axes along x, y, z |
|
| real(kind=c_float), | intent(in), | dimension(4) | :: | rgba |
color [r, g, b, a] (0 to 1) |
|
| type(c_ptr), | intent(in), | optional | :: | texture |
image handle of the (day) texture |
|
| integer, | intent(in), | optional | :: | n_lon |
segments in longitude (default 128) |
|
| integer, | intent(in), | optional | :: | n_lat |
segments in latitude (default 64) |
|
| type(c_ptr), | intent(in), | optional | :: | night_texture |
image handle of the night texture |
|
| logical, | intent(in), | optional | :: | translucent |
a translucent surface (default false) |
A sphere mesh node: ellipsoid_create with equal semi-axes.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=c_double), | intent(in) | :: | radius |
the sphere's radius |
||
| real(kind=c_float), | intent(in), | dimension(4) | :: | rgba |
color [r, g, b, a] (0 to 1) |
|
| type(c_ptr), | intent(in), | optional | :: | texture |
image handle of the texture |
|
| integer, | intent(in), | optional | :: | n_lon |
segments in longitude (default 128) |
|
| integer, | intent(in), | optional | :: | n_lat |
segments in latitude (default 64) |
An arrow (OpenFrames' Vector: a cylinder body and a cone head) from
base along direction: body of length body_length and radius
body_radius, then a head of length head_length and base radius
head_radius, closed at the bottom of the body and of the head, with
n_segments around. Triangles are counter-clockwise seen from outside;
indices are 0-based; uv is zero. Sizes are given by arrow_size.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=c_double), | intent(in) | :: | base(3) |
the arrow's base (start of the body) |
||
| real(kind=c_double), | intent(in) | :: | direction(3) |
the arrow's axis (need not be unit length) |
||
| real(kind=c_double), | intent(in) | :: | body_length |
lengths along the axis, and radii |
||
| real(kind=c_double), | intent(in) | :: | head_length |
lengths along the axis, and radii |
||
| real(kind=c_double), | intent(in) | :: | body_radius |
lengths along the axis, and radii |
||
| real(kind=c_double), | intent(in) | :: | head_radius |
lengths along the axis, and radii |
||
| integer, | intent(in) | :: | n_segments |
segments around |
||
| real(kind=c_float), | intent(out), | dimension(:,:) | :: | xyz |
(3, n_vertices) |
|
| real(kind=c_float), | intent(out), | dimension(:,:) | :: | normals |
(3, n_vertices) |
|
| real(kind=c_float), | intent(out), | dimension(:,:) | :: | uv |
(2, n_vertices): zero |
|
| integer(kind=c_int32_t), | intent(out), | dimension(:) | :: | indices |
(n_indices) |
Number of vertices and triangle indices of arrow(..., n_segments, ...).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | n_segments |
segments around |
||
| integer, | intent(out) | :: | n_vertices |
number of vertices |
||
| integer, | intent(out) | :: | n_indices |
number of triangle indices (3 per triangle) |
A triaxial ellipsoid with semi-axes radii (x, y, z) centered at the
origin, for an equirectangular texture in geodetic coordinates.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=c_double), | intent(in), | dimension(3) | :: | radii |
semi-axes along x, y, z |
|
| integer, | intent(in) | :: | n_lon |
segments in longitude (>= 3) |
||
| integer, | intent(in) | :: | n_lat |
segments in latitude (>= 2) |
||
| real(kind=c_float), | intent(out), | dimension(:,:) | :: | xyz |
(3, n_vertices) |
|
| real(kind=c_float), | intent(out), | dimension(:,:) | :: | normals |
(3, n_vertices) |
|
| real(kind=c_float), | intent(out), | dimension(:,:) | :: | uv |
(2, n_vertices) |
|
| integer(kind=c_int32_t), | intent(out), | dimension(:) | :: | indices |
(n_indices) |
Number of vertices and triangle indices of ellipsoid(radii, n_lon, n_lat, ...).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | n_lon |
segments in longitude |
||
| integer, | intent(in) | :: | n_lat |
segments in latitude |
||
| integer, | intent(out) | :: | n_vertices |
number of vertices |
||
| integer, | intent(out) | :: | n_indices |
number of triangle indices (3 per triangle) |