In this paper, we propose the concept of Voronoi-based potentially visible set, called V\text underscore PVS, to facilitate the visibility computation. Given a polygon $P$, we first compute the Voronoi diagram of $P$, i.e., $\text{VD}(P)$. Then we refine $\text{VD}(P)$ into $\text{VD}(P')$, so that $\text{VD}(P')$ only contains triangular or quadrangular cells. For each Voronoi edge, a V\text underscore PVS is computed, which stores the visibility information of the Voronoi vertices and critical points on the edge. Based on the V\text underscore PVS, we can fast query the visibility polygons of an arbitrary point, a segment or a trajectory, a region, and a moving point using a uniform data structure.