Optimal shortest path queries in a simple polygon

Let <italic>P</italic> be a simple polygon with <italic>n</italic> sides. This paper shows how to preprocess the polygon so that, given two query points <italic>p</italic> and <italic>q</italic> inside <italic>P</italic>, the length of the shortest path inside the polygon from <italic>p</italic> to <italic>q</italic> can be found in time <italic>&Ogr;</italic>(log <italic>n</italic>). The path itself must be polygonal and can be extracted in additional time proportional to the number of turns it makes. The preprocessing consists of triangulation plus a linear amount of additional work.