Date post: | 15-Dec-2014 |
Category: |
Education |
Upload: | lokesh-reddy |
View: | 885 times |
Download: | 1 times |
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
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
Clipping Primitives
Different primitives can be handled in different ways› Points› Lines› Polygons
Graphics 4159.235
Viewing & Clipping - Outline
Viewing in 2D Clipping in 2D Cohen-Sutherland Algorithm Cyrus & Beck Algorithm Clipping Polygons Sutherland-Hodgman Algorithm
Graphics 5159.235
Viewing in 2D - Viewport
Window in world coordinates.
45
250
Viewport inDevice coords
250 x 250Pixels.
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
Graphics 7159.235
Trivial Clipping Acceptance
If all a line’s vertices lie inside box we “accept” it
Graphics 8159.235
Trivial Vertex Rejection
All line vertices lie outside and on same side reject.
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
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
Cohen-Sutherland Line Clipping
0000
1001
0001
0101 0100 0110
0010
10101000
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)
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
Graphics 14159.235
Clipping Polygons
Clip polygons by clipping successively against 4 sides.
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
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
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
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