point Function

private function point(self, i) result(v)

Point i as written: read back from the buffers (zero if not held).

Type Bound

LineChain

Arguments

Type IntentOptional Attributes Name
class(LineChain), intent(in) :: self
integer, intent(in) :: i

chain index

Return Value real(kind=wp), (3)


Calls

proc~~point~~CallsGraph proc~point LineChain%point proc~line_buffer line_buffer proc~point->proc~line_buffer interface~vkf_line_points vkf_line_points proc~line_buffer->interface~vkf_line_points

Called by

proc~~point~~CalledByGraph proc~point LineChain%point proc~drawn_marker MarkerArtist%drawn_marker proc~drawn_marker->proc~point proc~drawn_segment SegmentArtist%drawn_segment proc~drawn_segment->proc~point proc~drawn_segment~2 CustomLineSegments%drawn_segment proc~drawn_segment~2->proc~point proc~marker_pick marker_pick proc~marker_pick->proc~drawn_marker proc~segment_artist_pick segment_artist_pick proc~segment_artist_pick->proc~drawn_segment proc~drawable_pick DrawableTrajectory%drawable_pick proc~drawable_pick->proc~marker_pick proc~drawable_pick->proc~segment_artist_pick

Source Code

    function point(self, i) result(v)
        class(LineChain), intent(in) :: self
        integer, intent(in) :: i                !! chain index
        real(wp) :: v(3)
        real(c_float), dimension(:,:,:), pointer :: p
        integer :: j
        v = 0.0_wp
        do j = 1, self%n_chunks
            associate (c => self%chunks(j))
                if (i < c%first .or. i > c%first + c%capacity - 1) cycle
                call line_buffer(c%line, p)
                if (associated(p)) v = real(p(1:3, 1, i-c%first+1), wp) + real(p(1:3, 2, i-c%first+1), wp)
                return
            end associate
        end do
    end function point