Every spacing of arc length (the points joined by straight lines).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(MarkerArtist), | intent(inout) | :: | self | |||
| integer, | intent(in) | :: | n |
the points |
subroutine intermediates_by_distance(self, n) type(MarkerArtist), intent(inout) :: self integer, intent(in) :: n !! the points real(wp) :: p(3), frac, t0, t1 integer :: j if (self%next_index == 0) then self%next_index = 2 self%arc = 0.0_wp self%prev_arc = 0.0_wp self%target = self%spacing_ self%prev_point = art_point(self, counted(self, 1, n), self%sources_) end if do j = self%next_index, n p = art_point(self, counted(self, j, n), self%sources_) self%arc = self%arc + norm2(p - self%prev_point) t0 = self%traj%time(counted(self, j - 1, n)) t1 = self%traj%time(counted(self, j, n)) do while (self%arc >= self%target) frac = (self%target - self%prev_arc) / (self%arc - self%prev_arc) call push_intermediate(self, self%prev_point + frac * (p - self%prev_point), t0 + frac * (t1 - t0)) self%target = self%target + self%spacing_ end do self%prev_arc = self%arc self%prev_point = p end do self%next_index = n + 1 end subroutine intermediates_by_distance