Research Article

Visibility Detection of 3D Objects and Visual K-Nearest Neighbor Query Based on Convex Hull Model

Algorithm 4

Occlude algorithm.
Input: query point q, candidate set Obj, obstacle set ObsSet;
Output: True/False;
(1) BEGIN
(2) for each obs in ObsSet do
(3)  pToObs←Add(q);
(4)  Concave←BuildConcave (pToObs);
(5)  Ridge←GetRidge(Concave);
(6)  Fac←GetFac(Concave);
(7)  for each ridge in Ridge do
(8)   for each fac in Fac do
(9)    if (ridge.id ! = fac.id) then
(10)     num←IntSegTri (ridge, fac);
(11)    end if
(12)   end for
(13)  end for
(14)  if num.Contains(1) then
(15)   Lis_Obs.Add(ObsSet [ridge.id]);
(16)  end if
(17) end for
(18)mulObs←MulJud (q, Obs, Lis_Obs);
(19)TorF←OneJudVisible(q, Obj, mulObs);
(20) if TorF = = false
(21)  Return True;
(22) else
(23)  Return False;
(24) end if
(25) END