+ All Categories
Home > Education > Clipping 22

Clipping 22

Date post: 15-Dec-2014
Category:
Upload: lokesh-reddy
View: 885 times
Download: 1 times
Share this document with a friend
Description:
hai
18
Drawing with Thick Primitives Drawing with Thick Primitives • How do we thicken the line stroke width? • Ideas: – Place the center of the circular “brush” on the pixel – Place the upper corner of the square “marker” on the pixel (issues of orientation) – Then do scan conversion algorithm
Transcript
Page 1: Clipping 22

Drawing with Thick Primitives

Drawing with Thick Primitives• How do we thickenthe line stroke width?• Ideas:– Place the center ofthe circular “brush” onthe pixel– Place the uppercorner of the square“marker” on the pixel(issues of orientation)– Then do scanconversion algorithm

Page 2: Clipping 22

Why Clip?

Rasterization is very expensive› Approximately linear with number of

fragments created› Math and logic per pixel

If we only rasterize what is actually viewable, we can save a lot› A few operations now can save many later

Page 3: Clipping 22

Clipping Primitives

Different primitives can be handled in different ways› Points› Lines› Polygons

Page 4: Clipping 22

Graphics 4159.235

Viewing & Clipping - Outline

Viewing in 2D Clipping in 2D Cohen-Sutherland Algorithm Cyrus & Beck Algorithm Clipping Polygons Sutherland-Hodgman Algorithm

Page 5: Clipping 22

Graphics 5159.235

Viewing in 2D - Viewport

Window in world coordinates.

45

250

Viewport inDevice coords

250 x 250Pixels.

Page 6: Clipping 22

Graphics 6159.235

Clipping in 2D Need to clip primitives (eg lines) against the

sides of the viewing window› e.g lines or polygons› We only see what is inside the window

Page 7: Clipping 22

Graphics 7159.235

Trivial Clipping Acceptance

If all a line’s vertices lie inside box we “accept” it

Page 8: Clipping 22

Graphics 8159.235

Trivial Vertex Rejection

All line vertices lie outside and on same side reject.

Page 9: Clipping 22

Graphics 9159.235

This is an efficient method of accepting or rejecting lines that do not intersect the window edges.

Assign a binary 4 bit code to each vertex :› First bit : above top of window, y > ymax› Second bit : below bottom, y < ymin› Third bit : to right of right edge, x > xmax› Fourth bit : to left of left edge, x < xmin› 4-bit code called: Outcode

Cohen-Sutherland Clipping Algorithm

Page 10: Clipping 22

Cohen-Sutherland Line Clipping

Divide 2D space into 3x3 regions. Middle region is the clipping window. Each region is assigned a 4-bit code. Bit 1 is set to 1 if the region is to the

left of the clipping window, 0 otherwise. Similarly for bits 2, 3 and 4.

4 3 2 1

Top Bottom Right Left

Page 11: Clipping 22

Cohen-Sutherland Line Clipping

0000

1001

0001

0101 0100 0110

0010

10101000

Page 12: Clipping 22

Graphics 12159.235

Cohen-Sutherland Algorithm

0000

0100

0001

1001 1000 1010

0010

01100101

Both endpoint codes 0000, trivial acceptance, else:

Do logical AND of Outcodes (reject if non-zero)

Page 13: Clipping 22

Cohen-Sutherland Line Clipping

For those lines that we cannot immediately determine, we successively clip against each boundary.

Then check the new endpoint for its region code.

How to find boundary intersection: To find y coordinate at vertical intersection, substitute x value at the boundary into the line equation of the line to be clipped.

Other algorithms:› Faster: Cyrus-Beck› Even faster: Liang-Barsky› Even faster: Nichol-Lee-Nichol

Page 14: Clipping 22

Graphics 14159.235

Clipping Polygons

Clip polygons by clipping successively against 4 sides.

Page 15: Clipping 22

Graphics 15159.235

Clipping Polygons

Clip polygons by clipping successively against all 4 sides

Can implement as pipelined algorithm (ie special hardware can do the work)

Recursively test each edge.› Form new edge with next vertex› Call with new edge

Page 16: Clipping 22

Graphics 16159.235

Sutherland-Hodgman Clipping Algorithm

OutputVertex

FirstOutput

Four cases of polygon clipping:

Inside Outside Inside Outside Inside Outside Inside Outside

Case 3No

output.

Case 1 Case 2.

OutputIntersection

Case 4

SecondOutput

Page 17: Clipping 22

Graphics 17159.235

Loop round vertices, test each against all 4 clipping planes in sequence

Call algorithm again with new edge formed by next vertex -re-entrant

No storage requirement between stages› Easy to implement in hardware

Sutherland-Hodgman Algorithm

Page 18: Clipping 22

18

Viewing & Clipping - Summary

Window and Viewport Clipping cuts out what we do not

“see” Also reduces unnecessary

computation Can be done at various levels Java 2D system does a lot of the

clipping for us if we use that rendering pipeline


Recommended