Compute, if the triangles in stl intersects the cube.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_stlData_type), | intent(in) | :: | stl_data | |||
type(tem_cube_type), | intent(in) | :: | cube |
function tem_stlCubeOverlap(stl_data, cube) result(overlaps)
!--------------------------------------------------------------------------!
type(tem_stlData_type), intent(in) :: stl_data
type(tem_cube_type), intent(in) :: cube
logical :: overlaps
!--------------------------------------------------------------------------!
integer :: iTri
type(tem_triangle_type) :: triangle
!--------------------------------------------------------------------------!
overlaps = .false.
do iTri=1, stl_data%nTris
triangle%nodes(:,1) = stl_data%nodes( :, stl_data%tri_node(1,iTri) )
triangle%nodes(:,2) = stl_data%nodes( :, stl_data%tri_node(2,iTri) )
triangle%nodes(:,3) = stl_data%nodes( :, stl_data%tri_node(3,iTri) )
overlaps = overlaps .or. tem_triangleCubeOverlap(triangle, cube)
! if intersection is found then terminate the loop and return overlaps
if (overlaps) return
end do
end function tem_stlCubeOverlap