|  | 
| recursive subroutine | mod_shape_constructive_solid_geometry::initialize_shape_union (shape) | 
|  | Initialize the union. 
 | 
|  | 
| recursive subroutine | mod_shape_constructive_solid_geometry::copy_shape_union (shape, copy) | 
|  | Copy the union. 
 | 
|  | 
| logical pure recursive function | mod_shape_constructive_solid_geometry::shape_union_is_inside (shape, point) | 
|  | Check if a point lies inside the union. 
 | 
|  | 
| recursive subroutine | mod_shape_constructive_solid_geometry::shape_union_get_samples_inside (shape, i, j, k, n, n_samples, samples) | 
|  | Check if a given number of point lies in an union. 
 | 
|  | 
| pure recursive subroutine | mod_shape_constructive_solid_geometry::shape_union_get_distance (shape, point, distance, direction) | 
|  | Compute the signed distance and the signed direction from a point to the union. 
 | 
|  | 
| recursive subroutine | mod_shape_constructive_solid_geometry::initialize_shape_intersection (shape) | 
|  | Initialize the intersection. 
 | 
|  | 
| recursive subroutine | mod_shape_constructive_solid_geometry::copy_shape_intersection (shape, copy) | 
|  | Copy the intersection. 
 | 
|  | 
| logical pure recursive function | mod_shape_constructive_solid_geometry::shape_intersection_is_inside (shape, point) | 
|  | Check if a point lies inside the intersection. 
 | 
|  | 
| recursive subroutine | mod_shape_constructive_solid_geometry::shape_intersection_get_samples_inside (shape, i, j, k, n, n_samples, samples) | 
|  | Check if a given number of point lies in an intersection. 
 | 
|  | 
| pure recursive subroutine | mod_shape_constructive_solid_geometry::shape_intersection_get_distance (shape, point, distance, direction) | 
|  | Compute the signed distance and the signed direction from a point to the intersection. 
 | 
|  | 
| recursive subroutine | mod_shape_constructive_solid_geometry::initialize_shape_difference (shape) | 
|  | Initialize the difference. 
 | 
|  | 
| recursive subroutine | mod_shape_constructive_solid_geometry::copy_shape_difference (shape, copy) | 
|  | Copy the difference. 
 | 
|  | 
| logical pure recursive function | mod_shape_constructive_solid_geometry::shape_difference_is_inside (shape, point) | 
|  | Check if a point lies inside the difference. 
 | 
|  | 
| recursive subroutine | mod_shape_constructive_solid_geometry::shape_difference_get_samples_inside (shape, i, j, k, n, n_samples, samples) | 
|  | Check if a given number of point lies in a difference. 
 | 
|  | 
| pure recursive subroutine | mod_shape_constructive_solid_geometry::shape_difference_get_distance (shape, point, distance, direction) | 
|  | Compute the signed distance and the signed direction from a point to the difference. 
 | 
|  | 
      
        
          | recursive subroutine mod_shape_constructive_solid_geometry::shape_difference_get_samples_inside | ( | class(t_shape_difference), intent(inout) | shape, | 
        
          |  |  | integer, intent(in) | i, | 
        
          |  |  | integer, intent(in) | j, | 
        
          |  |  | integer, intent(in) | k, | 
        
          |  |  | integer, intent(in) | n, | 
        
          |  |  | integer, intent(in) | n_samples, | 
        
          |  |  | integer, dimension(:,:,:), intent(inout) | samples ) | 
      
 
Check if a given number of point lies in a difference. 
Sample a cell of coordinates (i,j,k) with (2*n_samples+1)^d samples, where d denotes the dimension of the cell. Return a integer array samples containing the value n where the sample is inside the shape.
n_samples is called the sampling level and can take its value in range [0,∞].
Example of sampling for various sampling level: 
  !!    n_samples = 0   n_samples = 1   n_samples = 2
  !!      ┏━━━━━━━┓       ×━━━×━━━×       ×━×━×━×━×
  !!      ┃       ┃       ┃       ┃       × × × × ×
  !!      ┃   ×   ┃       ×   ×   ×       × × × × ×    ...
  !!      ┃       ┃       ┃       ┃       × × × × ×
  !!      ┗━━━━━━━┛       ×━━━×━━━×       ×━×━×━×━×
  !! 
- Parameters
- 
  
    | [in,out] | shape | difference shape |  | [in] | i,j,k | coordinates of the cell |  | [in] | n | value to put where the sample is inside the difference |  | [in] | n_samples | sampling level (see description) |  | [in,out] | samples | array of the (2*n_sammples+1)^d samples |  
 
 
 
      
        
          | recursive subroutine mod_shape_constructive_solid_geometry::shape_intersection_get_samples_inside | ( | class(t_shape_intersection), intent(inout) | shape, | 
        
          |  |  | integer, intent(in) | i, | 
        
          |  |  | integer, intent(in) | j, | 
        
          |  |  | integer, intent(in) | k, | 
        
          |  |  | integer, intent(in) | n, | 
        
          |  |  | integer, intent(in) | n_samples, | 
        
          |  |  | integer, dimension(:,:,:), intent(inout) | samples ) | 
      
 
Check if a given number of point lies in an intersection. 
Sample a cell of coordinates (i,j,k) with (2*n_samples+1)^d samples, where d denotes the dimension of the cell. Return a integer array samples containing the value n where the sample is inside the shape.
n_samples is called the sampling level and can take its value in range [0,∞].
Example of sampling for various sampling level: 
  !!    n_samples = 0   n_samples = 1   n_samples = 2
  !!      ┏━━━━━━━┓       ×━━━×━━━×       ×━×━×━×━×
  !!      ┃       ┃       ┃       ┃       × × × × ×
  !!      ┃   ×   ┃       ×   ×   ×       × × × × ×    ...
  !!      ┃       ┃       ┃       ┃       × × × × ×
  !!      ┗━━━━━━━┛       ×━━━×━━━×       ×━×━×━×━×
  !! 
- Parameters
- 
  
    | [in,out] | shape | intersection shape |  | [in] | i,j,k | coordinates of the cell |  | [in] | n | value to put where the sample is inside the intersection |  | [in] | n_samples | sampling level (see description) |  | [in,out] | samples | array of the (2*n_sammples+1)^d samples |  
 
 
 
      
        
          | recursive subroutine mod_shape_constructive_solid_geometry::shape_union_get_samples_inside | ( | class(t_shape_union), intent(inout) | shape, | 
        
          |  |  | integer, intent(in) | i, | 
        
          |  |  | integer, intent(in) | j, | 
        
          |  |  | integer, intent(in) | k, | 
        
          |  |  | integer, intent(in) | n, | 
        
          |  |  | integer, intent(in) | n_samples, | 
        
          |  |  | integer, dimension(:,:,:), intent(inout) | samples ) | 
      
 
Check if a given number of point lies in an union. 
Sample a cell of coordinates (i,j,k) with (2*n_samples+1)^d samples, where d denotes the dimension of the cell. Return a integer array samples containing the value n where the sample is inside the shape.
n_samples is called the sampling level and can take its value in range [0,∞].
Example of sampling for various sampling level: 
  !!    n_samples = 0   n_samples = 1   n_samples = 2
  !!      ┏━━━━━━━┓       ×━━━×━━━×       ×━×━×━×━×
  !!      ┃       ┃       ┃       ┃       × × × × ×
  !!      ┃   ×   ┃       ×   ×   ×       × × × × ×    ...
  !!      ┃       ┃       ┃       ┃       × × × × ×
  !!      ┗━━━━━━━┛       ×━━━×━━━×       ×━×━×━×━×
  !! 
- Parameters
- 
  
    | [in,out] | shape | union shape |  | [in] | i,j,k | coordinates of the cell |  | [in] | n | value to put where the sample is inside the union |  | [in] | n_samples | sampling level (see description) |  | [in,out] | samples | array of the (2*n_sammples+1)^d samples |