Picked on the ellipsoid (exact), with the geodetic latitude and longitude of the point hit (in the body's axes: sphere_attitude); else the frame's origin.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Sphere), | intent(in), | target | :: | self | ||
| type(PickCamera), | intent(in) | :: | cam |
the camera and cursor of the pick |
||
| real(kind=wp), | intent(in) | :: | to_root(4,4) |
the frame's transform to the root frame |
||
| type(PickHit), | intent(inout), | allocatable | :: | hits(:) |
hits so far, in hits(1:n); added to |
|
| integer, | intent(inout) | :: | n |
number of hits |
subroutine sphere_pick(self, cam, to_root, hits, n) class(Sphere), intent(in), target :: self type(PickCamera), intent(in) :: cam !! the camera and cursor of the pick real(wp), intent(in) :: to_root(4,4) !! the frame's transform to the root frame type(PickHit), allocatable, intent(inout) :: hits(:) !! hits so far, in hits(1:n); added to integer, intent(inout) :: n !! number of hits if (self%contents_shown()) then if (pick_ellipsoid(self, cam, to_root, self%sphere_position_, quat_to_matrix(self%sphere_attitude_), & self%radii(), .true., hits, n)) return end if call self%ReferenceFrame%pick(cam, to_root, hits, n) end subroutine sphere_pick