Write the Liang B arsky line clipping algorithm. Why is Liang Barsky algorithm more efficient than the Cohen Sutherland algorithm?
Liang Barsky Line Clipping: Faster line clippers have been developed that are based an analysis of the parametric equation of a line segment, Which we can write in the form: where using these parametric equation Cyrus and Beck developed an alga that is generally more efficient than the Cohen Sutherland alga. Later Liang and Barsky independently devised an even faster parametric line clipping alga. In this first write the paint clipping conditions in the parametric form: each of these four inequalities can be expressed as: where parameters p and q are defined. Any line that is parallel to one of the clipping boundaries has p_{k} = 0 for the value of k corresponding to that boundaries ( k = 1, 2, 3, and 4 correspond to the left, right, bottom and top boundaries ) If for the value of k we also find q_{k }< 0, then line is completely outside the boundary and can be eliminated from further consideration. If q_{k} > 0, the infinite extension of the line processed from the outside to the inside of the infinite extension of this particular clipping boundary. If p_{k} > 0 the line proceeds from the inside to the outside. For a nonzero value of p k, we can calculate the value of u that corresponds to the point where the infinitely extended line intersects the extension of boundary k. For each line, we can calculate values for parameters u_{1 }and u_{2} that define that part of the line that lies within the clip rectangle. The value of r is determined by looking at the rectangle edges for which the line proceeds from the outside to the inside . For these edges we calculate. The value of as taken as the largest of the set consisting of 0 and the various values of r. Conversely the value of is determined by examining the boundaries for which the line proceeds from inside to outside. A value of r is calculated for each of these boundaries, and the value of is the minimum of the set consisting of 1 and the calculated r values. If u_{1 }> u_{2 }the line is completely outside the clip window and of can be rejected. Otherwise the endpoints of the clipped line are calculated from the two values of parameter u. This algorithm is presented in the following procedure, Line intersection parameters are initialized to the values u_{1} = 0 and u_{2} = 1. For each clipping boundary the appropriate values for p and q are calculated and rsed by the function clip test to determine whether the line can be rejected of whether the intersection parameters are to be adjusted. When p > 0, the parameter r is used to update u_{1}; when p > 0 parameter r is used to update u. If updating u_{1 }or u_{2 }results in u_{1 }> u_{2 }we reject the line. Otherwise we update the appropriate u parameter only if the new value results in a shortening of the line. When p = 0 and q < 0 we can discard the line since it is parallel to and outside of this boundary If the line has not been rejected after all four values of p and q have been tested, the endpoints of the clipped line are determined from values of u_{1} and u_{2. }
Efficiency of Liang Algorithm than Cohen Sutherland algorithm: The Liang-Barky algorithm is more efficient than the Cohen Sutherland algorithm, since intersection calculations are reduced. Each update of parameters u and u requires only one division; and window intersections of the line are computed only once, when the final values of u and u have been computed. In contrast, the Cohen Sutherland algorithm can repeatedly calculate intersections along a line path, even though the line may be completely outside the clip window. And each intersection calculation requires both a division and a multiplication. Both the Cohen Sutherland and the Liang Barky algorithms can be extended to three dimensional clipping.