build_mesh_from_indexed Subroutine

public subroutine build_mesh_from_indexed(vertices, faces, mesh)

頂点配列と三角形インデックス配列から面頂点配列(v0,v1,v2)を展開して初期化する。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: vertices(:,:)
integer(kind=i32), intent(in) :: faces(:,:)
type(mesh_type), intent(out) :: mesh

展開後に初期化した三角形メッシュ。


Calls

proc~~build_mesh_from_indexed~~CallsGraph proc~build_mesh_from_indexed build_mesh_from_indexed proc~init_mesh init_mesh proc~build_mesh_from_indexed->proc~init_mesh proc~update_mesh_geometry update_mesh_geometry proc~init_mesh->proc~update_mesh_geometry proc~build_collision_grid build_collision_grid proc~update_mesh_geometry->proc~build_collision_grid proc~cross~2 cross proc~update_mesh_geometry->proc~cross~2 proc~cell_id~2 cell_id proc~build_collision_grid->proc~cell_id~2 proc~coord_to_cell~2 coord_to_cell proc~build_collision_grid->proc~coord_to_cell~2

Called by

proc~~build_mesh_from_indexed~~CalledByGraph proc~build_mesh_from_indexed build_mesh_from_indexed proc~load_obj_mesh load_obj_mesh proc~load_obj_mesh->proc~build_mesh_from_indexed proc~build_mesh_from_config build_mesh_from_config proc~build_mesh_from_config->proc~load_obj_mesh proc~load_or_init_run_state load_or_init_run_state proc~load_or_init_run_state->proc~build_mesh_from_config program~main main program~main->proc~load_or_init_run_state

Source Code

  subroutine build_mesh_from_indexed(vertices, faces, mesh)
    real(dp), intent(in) :: vertices(:, :)
    integer(i32), intent(in) :: faces(:, :)
    type(mesh_type), intent(out) :: mesh
    real(dp), allocatable :: v0(:, :), v1(:, :), v2(:, :)
    integer(i32) :: i, ntri

    if (size(vertices, 1) /= 3 .or. size(faces, 1) /= 3) then
      error stop "vertices/faces shape mismatch"
    end if

    ntri = size(faces, 2)
    allocate (v0(3, ntri), v1(3, ntri), v2(3, ntri))
    do i = 1, ntri
      v0(:, i) = vertices(:, faces(1, i))
      v1(:, i) = vertices(:, faces(2, i))
      v2(:, i) = vertices(:, faces(3, i))
    end do
    call init_mesh(mesh, v0, v1, v2)
  end subroutine build_mesh_from_indexed