1 / 16

Line Algorithm

Line Algorithm. Pradondet Nilagupta Dept. of Computer Engineering Kasetsart University. Why Lines?. Lines most common 2D primitive - done 100s or 1000s of times each frame even 3D wireframes are eventually 2D lines!

axelle
Download Presentation

Line Algorithm

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Line Algorithm Pradondet Nilagupta Dept. of Computer Engineering Kasetsart University 204481 Foundation of Computer Graphics

  2. Why Lines? Lines • most common 2D primitive - done 100s or 1000s of times each frame • even 3D wireframes are eventually 2D lines! • optimized algorithms contain numerous tricks/techniques that help in designing more advanced algorithms 204481 Foundation of Computer Graphics

  3. Line Requirements • Must compute integer coordinates of pixels which lie on or near a line or circle. • Pixel level algorithms are invoked hundreds or thousands of times when an image is created or modified – must be fast! • Lines must create visually satisfactory images. • Lines should appear straight • Lines should terminate accurately • Lines should have constant density • Line algorithm should always be defined. 204481 Foundation of Computer Graphics

  4. Cartesian Coordinate System 6 P = (X,Y) 5 4 P2 = (X2,Y2) 3 2 1 P1 = (X1,Y1) 5 1 2 3 4 6 RISE Y2-Y1 SLOPE = = RUN X2-X1 Basic Line Equation Given two points P1=(X1,Y1), P2=(X2, Y2) Consider a third point on the line: P = (X,Y) Y = [(Y2-Y1)/(X2-X1)]*(X-X1)+ Y1 or Y = mx + b 204481 Foundation of Computer Graphics

  5. Other Helpful Formulas • Length of line segment between P1 and P2: • Midpoint of a line segment between P1 and P3: • Two lines are perpendicular iff 1) M1 = -1/M2 2) Cosine of the angle between them is 0. 204481 Foundation of Computer Graphics

  6. Parametric Form Given points P1 = (X1, Y1) and P2 = (X2, Y2) X = X1 + t(X2-X1) Y = Y1 + t(Y2-Y1) We get all the other points on the line segment between (X1,Y1) and (X2,Y2) as 0 < t < 1 204481 Foundation of Computer Graphics

  7. Simple DDA* Line Algorithm • The digital differential analyzer (DDA) is a scan-conversion line algorithm based on calculating either y or x where y = y2-y1 x = x1-x2 • For lines with a positive slope greater than 1 Xk+1 = Xk +1/m • For lines with a positive slope less than 1 Yk+1 = Yk + m 204481 Foundation of Computer Graphics

  8. DDA Code #include “device.h” #define ROUND (a) ((int) (a+0.5)) void lineDDA( int xa, int ya, int xb, int yb) { int dx = xb-xa, dy = yb – ya, steps, k; float xinc, yinc, x = xa, y = ya; if (abs(dx) > abs(dy)) steps = abs(dx); else steps = abs(dy); xinc = dx/(float) steps; yinc = dy/(float) steps; setPixel(ROUND(x), ROUND(y)); for (k=0; k<steps; k++) { x += xinc; y+= yinc; setPixel(ROUND(x), ROUND(y)); } DDA create good lines but it is too time consuming due to the round function and long operation on real values 204481 Foundation of Computer Graphics

  9. 13 12 11 10 9 6 11 7 8 9 10 12 13 DDA Example Compute which pixels should be turned on to represent the line from (6,9) to (11,12). step = ? xinc = ? yinc = ? 204481 Foundation of Computer Graphics

  10. DDA Example Line from (6,9) to (11,12). step := Max of (ABS(11-6), ABS(12-9)) = 5 Xinc := 1 Yinc := 0.6 Values computed are: (6,9), (7,9.6), (8,10.2), (9,10.8), (10,11.4), (11,12) 204481 Foundation of Computer Graphics

  11. Bresenham’s Line Drawing Algorithm 1. Input the two line endpoints and store the left endpoint in (X0,Y0) 2. Load (X0,Y0) into the frame buffer; that is, plot the first point. 3. Calculate constants X, Y, 2Y, and 2Y - 2X, and obtain the starting value for the decision parameter as P0 = 2Y - X 4. At each Xk along the line, starting at k = 0, perform the following test: If Pk < 0, the next point to plot is (Xk + 1, Yk) and Pk+1 = Pk + 2Y Otherwise, the next point to plot is (Xk + 1, Yk + 1) and Pk+1 = Pk + 2Y - 2X 5. Repeat step 4, X times. 204481 Foundation of Computer Graphics

  12. Bresenham’s Line Algorithm #include “device.h” void lineBres( int xa, int ya, int xb, int yb) { int dx = abs(xb-xa), dy = abs(yb – ya); int p = 2*dy-dx; int twoDy = 2*dy, twoDyDx = 2* (dy-dx); int x,y,xEnd; /* Determine which point to use as start, which as end */ if (xa > xb){ x = xb; y = yb; xEnd = xa; } else { x = xa; y = ya; xEnd = xb; } setPixel(x,y); while (x < xEnd){ x++; if (p < 0) p += twoDy; else { y++; p += twoDyDx;} setPixel(x,y); } } 204481 Foundation of Computer Graphics

  13. Example We digitize the line with endpoints (20,10) and (30,18) X= 10, Y = 8, 2Y = 16, 2Y - 2X = -4 p0 = 2Y - X = 6 204481 Foundation of Computer Graphics

  14. The aliasing problem • Aliasing is cause by finite addressability of the display. • Approximation of lines and circles with discrete points often gives a staircase appearance or "Jaggies". Aliased rendering of the line Desired line 204481 Foundation of Computer Graphics

  15. Antialiasing - solutions • Aliasing can be smoothed out by using higher addressability. • If addressability is fixed but intensity is variable, use the intensity to control the address of a "virtual pixel". Two adjacent pixels can be be used to give the impression of a point part way between them. The perceived location of the point is dependent upon the ratio of the intensities used at each. The impression of a pixel located halfway between two addressable points can be given by having two adjacent pixels at half intensity. • An antialiased line has a series of virtual pixels each located at the proper address. 204481 Foundation of Computer Graphics

  16. Aliasing / Antialiasing Examples 204481 Foundation of Computer Graphics

More Related