transform_camera Function

public pure function transform_camera(m, cam) result(out)

A camera (columns: eye, center, up) in the coordinates a rigid transform m (4x4) takes it to: the points moved, the up direction turned.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: m(4,4)

rigid transform

real(kind=wp), intent(in) :: cam(3,3)

(columns: eye, center, up)

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


Called by

proc~~transform_camera~~CalledByGraph proc~transform_camera transform_camera proc~fly fly proc~fly->proc~transform_camera proc~get_camera WindowProxy%get_camera proc~get_camera->proc~transform_camera proc~set_camera WindowProxy%set_camera proc~set_camera->proc~transform_camera proc~place_camera place_camera proc~place_camera->proc~fly proc~view_camera view_camera proc~view_camera->proc~get_camera proc~cursor_ray WindowProxy%cursor_ray proc~cursor_ray->proc~view_camera proc~frame WindowProxy%frame proc~frame->proc~place_camera proc~dispatch_events dispatch_events proc~frame->proc~dispatch_events proc~screen_position WindowProxy%screen_position proc~screen_position->proc~view_camera proc~window_pick WindowProxy%window_pick proc~window_pick->proc~view_camera proc~drag_handle drag_handle proc~drag_handle->proc~cursor_ray proc~grab_handle grab_handle proc~grab_handle->proc~cursor_ray proc~hover_handle hover_handle proc~hover_handle->proc~window_pick proc~resize WindowProxy%resize proc~resize->proc~frame proc~run WindowProxy%run proc~run->proc~frame proc~dispatch_event dispatch_event proc~dispatch_event->proc~drag_handle proc~dispatch_event->proc~grab_handle proc~dispatch_event->proc~hover_handle proc~release_handle release_handle proc~dispatch_event->proc~release_handle proc~release_handle->proc~hover_handle proc~dispatch_events->proc~dispatch_event

Source Code

    pure function transform_camera(m, cam) result(out)
        real(wp), intent(in) :: m(4,4)      !! rigid transform
        real(wp), intent(in) :: cam(3,3)    !! (columns: eye, center, up)
        real(wp) :: out(3,3)
        out(:, 1) = matmul(m(1:3, 1:3), cam(:, 1)) + m(1:3, 4)
        out(:, 2) = matmul(m(1:3, 1:3), cam(:, 2)) + m(1:3, 4)
        out(:, 3) = matmul(m(1:3, 1:3), cam(:, 3))
    end function transform_camera