## Description

Line sweep algorithm is probably the most popular algorithm in Computational Geometry. The algorithm basically tries to find intersection points among a set of lines in a Cartesian coordinate space. The algorithm has many real life usages and hence probably is more popular. In this thesis I am presenting two different implementations of the Line Sweep algorithm. The two variations of the algorithm are developed using C++ programming language. C++, is the chosen language as it provides a large amount of control over the program but the algorithm can be potentially developed in any choice of programming language. First implementation represents the algorithm as stated in the text book and in the second implementation I am proposing a slight modification. The goal of the alteration would be to enhance the efficiency of this algorithm by modifying one of the data structure used by line-sweep algorithm, namely status structure such as in the line-segment intersection problem, is the objective of this research. The status structure is used to keep track of the segments currently adjacent to one another and the proposed alteration will increase the efficiency of search operations on this structure. I will then be comparing the search operation time required by the two variants of the algorithm to prove the statement. Modern Design patterns like iterator and factory pattern have been used to develop the algorithm so that it can be easily applied to other use cases with little or no modifications. All the data structures have been self-implemented without dependency on any third party libraries or dynamic link libraries (DLLs). The primary goal of this project besides understanding and implementing the Line sweep algorithm is to suggest some modifications in the original data structure used in this algorithm in order to make it more efficient. Also the secondary goal is to present a working algorithm so that future students/ researchers can better understand the algorithm when they see the internal data structures being updated as the algorithm proceeds, which is very critical in understanding the overall algorithm.