Difference between revisions of "SCI/FreeSCI/Pathfinding/Patent"

Jump to navigation Jump to search
m
Some more wiki formatting fixes
m (Fixed formatting)
m (Some more wiki formatting fixes)
Line 14: Line 14:
The patent describes AvoidPath as consisting of three phases, namely a pre-processing phase, a pathfinding phase and a post-processing phase. Even though the pre- and post-processing phases are briefly explained in the patent specification, they are not mentioned in the claims and are therefore not patented. During the pre-processing phase the input is transformed in such a way that the start and end points are not inside any polygon, and that all polygons in the set may not be entered. For example, if the start point is inside a total access polygon that polygon is removed from the polygon set. If the end point is inside a near-point access polygon the end point is moved to the near-point and the original end point will be appended to the previously computed path in the post-processing phase.
The patent describes AvoidPath as consisting of three phases, namely a pre-processing phase, a pathfinding phase and a post-processing phase. Even though the pre- and post-processing phases are briefly explained in the patent specification, they are not mentioned in the claims and are therefore not patented. During the pre-processing phase the input is transformed in such a way that the start and end points are not inside any polygon, and that all polygons in the set may not be entered. For example, if the start point is inside a total access polygon that polygon is removed from the polygon set. If the end point is inside a near-point access polygon the end point is moved to the near-point and the original end point will be appended to the previously computed path in the post-processing phase.


We now proceed with describing the pathfinding phase, limiting ourselves to the most important aspects. The basic idea behind the algorithm is to construct a path that follows the direct trajectory from start point to end point, except where the trajectory properly intersects a polygon (this is covered by claim 6 of the patent). If the direct trajectory properly intersects a polygon <i>P</i>, then there must be more than one intersection point. Let <i>p</i> be the intersection point closest to the start point, and <i>q</i> be the intersection point closest to the end point. The computed path reaches <i>p</i> on the direct trajectory, then goes from <i>p</i> to <i>q</i> along the edges of the polygon and then resumes the direct trajectory. There are two ways to walk from <i>p</i> to <i>q</i>; the algorithm takes the shortest one. Optimization level 0 returns such a path, as illustrated in the following figure.
We now proceed with describing the pathfinding phase, limiting ourselves to the most important aspects. The basic idea behind the algorithm is to construct a path that follows the direct trajectory from start point to end point, except where the trajectory properly intersects a polygon (this is covered by claim 6 of the patent). If the direct trajectory properly intersects a polygon <i>P</i>, then there must be more than one intersection point. Let <i>p</i> be the intersection point closest to the start point, and <i>q</i> be the intersection point closest to the end point. The computed path reaches <i>p</i> on the direct trajectory, then goes from <i>p</i> to <i>q</i> along the edges of the polygon and then resumes the direct trajectory. There are two ways to walk from <i>p</i> to <i>q</i>; the algorithm takes the shortest one. Optimization level 0 returns such a path, as illustrated in the Figure 1.


At optimization level 1 the algorithm tries to optimize this path. It does this by attempting to shortcut any two nodes. A shortcut is only possible if it does not properly intersect any polygon in the polygon set. See Figure 2 for an illustration of an optimized version of the path in Figure 1.
At optimization level 1 the algorithm tries to optimize this path. It does this by attempting to shortcut any two nodes. A shortcut is only possible if it does not properly intersect any polygon in the polygon set. See Figure 2 for an illustration of an optimized version of the path in Figure 1.
Line 20: Line 20:
The resulting path is not the shortest path from <i>s</i> to <i>t</i>. The reason for this is that at optimization level 0 the shortest way about each individual polygon is chosen. However, it is very possible that the shortest path takes the longer way about one or more of the polygons. Optimization level 2 takes care of this by trying all permutations of ways to walk about the polygons. For <i>n</i> polygons this yields <i>2<sup>n</sup></i> combinations. The algorithm chooses the shortest path out of all of these. As can be seen in Figure 3, the shortest path is indeed found for this input.
The resulting path is not the shortest path from <i>s</i> to <i>t</i>. The reason for this is that at optimization level 0 the shortest way about each individual polygon is chosen. However, it is very possible that the shortest path takes the longer way about one or more of the polygons. Optimization level 2 takes care of this by trying all permutations of ways to walk about the polygons. For <i>n</i> polygons this yields <i>2<sup>n</sup></i> combinations. The algorithm chooses the shortest path out of all of these. As can be seen in Figure 3, the shortest path is indeed found for this input.


This raises the question of whether or not the algorithm is able to determine the shortest path for any input. This is not the case, as is demonstrated by the counterexample in Figure 4. The shortcut from v0to t cannot be taken as this would intersect polygon <i>W</i>. So the final path will go from <i>v<sub>0</sub></i> to <i>t</i> via <i>v<sub>1</sub></i>, even though it is much shorter to go there via <i>w<sub>0</sub></i>. Point <i>w<sub>0</sub></i> is never considered for the path as it is part of a polygon that is not intersected by the direct trajectory from <i>s</i> to <i>t</i>. This illustrates that this algorithm does not guarantee a shortest path, even at the highest optimization level.
This raises the question of whether or not the algorithm is able to determine the shortest path for any input. This is not the case, as is demonstrated by the counterexample in Figure 4. The shortcut from <i>v<sub>0</sub></i> to <i>t</i> cannot be taken as this would intersect polygon <i>W</i>. So the final path will go from <i>v<sub>0</sub></i> to <i>t</i> via <i>v<sub>1</sub></i>, even though it is much shorter to go there via <i>w<sub>0</sub></i>. Point <i>w<sub>0</sub></i> is never considered for the path as it is part of a polygon that is not intersected by the direct trajectory from <i>s</i> to <i>t</i>. This illustrates that this algorithm does not guarantee a shortest path, even at the highest optimization level.


The patent further makes an important note about polygon edges that lie along the display border. It is undesirable to have the path use the display border unnecessarily as this might trigger the game into loading an adjoining game scene. In order to prevent the shortest path algorithm from using polygon edges that lie along the display border, the distance for such edges is defined to be infinity.
The patent further makes an important note about polygon edges that lie along the display border. It is undesirable to have the path use the display border unnecessarily as this might trigger the game into loading an adjoining game scene. In order to prevent the shortest path algorithm from using polygon edges that lie along the display border, the distance for such edges is defined to be infinity.
245

edits

Navigation menu