set_constraint Subroutine

private subroutine set_constraint(self, constraint, axis)

Where the handle can be dragged (HANDLE_*; see the module documentation), with axis: the plane's normal (HANDLE_PLANE) or the line's direction (HANDLE_LINE), in the frame's coordinates. Taken when the handle is next grabbed.

Type Bound

DragHandle

Arguments

Type IntentOptional Attributes Name
class(DragHandle), intent(inout) :: self
integer, intent(in) :: constraint

HANDLE_*

real(kind=wp), intent(in), optional :: axis(3)

(frame coordinates; any length but 0)


Source Code

    subroutine set_constraint(self, constraint, axis)
        class(DragHandle), intent(inout) :: self
        integer, intent(in) :: constraint                   !! HANDLE_*
        real(wp), intent(in), optional :: axis(3)           !! (frame coordinates; any length but 0)
        if (constraint < HANDLE_FREE .or. constraint > HANDLE_SPHERE) return
        self%constraint_ = constraint
        if (present(axis)) then
            if (norm2(axis) > 0.0_wp) self%axis_ = axis / norm2(axis)
        end if
    end subroutine set_constraint