  A fundamental problem in computational geometry is to compute an
obstacle-avoiding Euclidean shortest path between two points in the plane. The
case of this problem on polygonal obstacles is well studied. In this paper, we
consider the problem version on curved obstacles, commonly modeled as
splinegons. A splinegon can be viewed as replacing each edge of a polygon by a
convex curved edge (polygons are special splinegons). Each curved edge is
assumed to be of O(1) complexity. Given in the plane two points s and t and a
set of $h$ pairwise disjoint splinegons with a total of $n$ vertices, we
compute a shortest s-to-t path avoiding the splinegons, in
$O(n+h\log^{1+\epsilon}h+k)$ time, where k is a parameter sensitive to the
structures of the input splinegons and is upper-bounded by $O(h^2)$. In
particular, when all splinegons are convex, $k$ is proportional to the number
of common tangents in the free space (called "free common tangents") among the
splinegons. We develop techniques for solving the problem on the general
(non-convex) splinegon domain, which also improve several previous results. In
particular, our techniques produce an optimal output-sensitive algorithm for a
basic visibility problem of computing all free common tangents among $h$
pairwise disjoint convex splinegons with a total of $n$ vertices. Our algorithm
runs in $O(n+h\log h+k)$ time and $O(n)$ space, where $k$ is the number of all
free common tangents. Even for the special case where all splinegons are convex
polygons, the previously best algorithm for this visibility problem takes
$O(n+h^2\log n)$ time.
