Contour plotting algorithms module
This module implements the marching squares algorithm and related functions for contour line extraction and rendering.
Calculate marching squares configuration for a cell
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | z1 | |||
real(kind=wp), | intent(in) | :: | z2 | |||
real(kind=wp), | intent(in) | :: | z3 | |||
real(kind=wp), | intent(in) | :: | z4 | |||
real(kind=wp), | intent(in) | :: | level | |||
integer, | intent(out) | :: | config |
Extract contour lines from a cell using marching squares
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | config | |||
real(kind=wp), | intent(in) | :: | x1 | |||
real(kind=wp), | intent(in) | :: | y1 | |||
real(kind=wp), | intent(in) | :: | x2 | |||
real(kind=wp), | intent(in) | :: | y2 | |||
real(kind=wp), | intent(in) | :: | x3 | |||
real(kind=wp), | intent(in) | :: | y3 | |||
real(kind=wp), | intent(in) | :: | x4 | |||
real(kind=wp), | intent(in) | :: | y4 | |||
real(kind=wp), | intent(in) | :: | z1 | |||
real(kind=wp), | intent(in) | :: | z2 | |||
real(kind=wp), | intent(in) | :: | z3 | |||
real(kind=wp), | intent(in) | :: | z4 | |||
real(kind=wp), | intent(in) | :: | level | |||
real(kind=wp), | intent(out) | :: | line_points(8) | |||
integer, | intent(out) | :: | num_lines |
Interpolate the positions where contour crosses cell edges
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | x1 | |||
real(kind=wp), | intent(in) | :: | y1 | |||
real(kind=wp), | intent(in) | :: | x2 | |||
real(kind=wp), | intent(in) | :: | y2 | |||
real(kind=wp), | intent(in) | :: | x3 | |||
real(kind=wp), | intent(in) | :: | y3 | |||
real(kind=wp), | intent(in) | :: | x4 | |||
real(kind=wp), | intent(in) | :: | y4 | |||
real(kind=wp), | intent(in) | :: | z1 | |||
real(kind=wp), | intent(in) | :: | z2 | |||
real(kind=wp), | intent(in) | :: | z3 | |||
real(kind=wp), | intent(in) | :: | z4 | |||
real(kind=wp), | intent(in) | :: | level | |||
real(kind=wp), | intent(out) | :: | xa | |||
real(kind=wp), | intent(out) | :: | ya | |||
real(kind=wp), | intent(out) | :: | xb | |||
real(kind=wp), | intent(out) | :: | yb | |||
real(kind=wp), | intent(out) | :: | xc | |||
real(kind=wp), | intent(out) | :: | yc | |||
real(kind=wp), | intent(out) | :: | xd | |||
real(kind=wp), | intent(out) | :: | yd |
Apply marching squares lookup table to get line segments
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | config | |||
real(kind=wp), | intent(in) | :: | xa | |||
real(kind=wp), | intent(in) | :: | ya | |||
real(kind=wp), | intent(in) | :: | xb | |||
real(kind=wp), | intent(in) | :: | yb | |||
real(kind=wp), | intent(in) | :: | xc | |||
real(kind=wp), | intent(in) | :: | yc | |||
real(kind=wp), | intent(in) | :: | xd | |||
real(kind=wp), | intent(in) | :: | yd | |||
real(kind=wp), | intent(out) | :: | line_points(8) | |||
integer, | intent(out) | :: | num_lines |