Lecture14b Clipping

Embed Size (px)

Citation preview

  • 7/31/2019 Lecture14b Clipping

    1/16

    Line Clipping

    Point clipping easy: Just check the inequalities

    xmin < x < xmax

    ymin < y < ymax

    Line clipping more tricky

  • 7/31/2019 Lecture14b Clipping

    2/16

    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

  • 7/31/2019 Lecture14b Clipping

    3/16

    Cohen-Sutherland Line Clipping

    0000

    1001

    0001

    0101 0100 0110

    0010

    10101000

  • 7/31/2019 Lecture14b Clipping

    4/16

    Cohen-Sutherland Line Clipping

    To clip a line, find out which regions itstwo endpoints lie in.

    If they are both in region 0000, then its

    completely in. If the two region numbers both have a 1 in

    the same bit position, the line is

    completely out. Otherwise, we have to do some more

    calculations.

  • 7/31/2019 Lecture14b Clipping

    5/16

    Cohen-Sutherland Line Clipping

    For those lines that we cannot immediatelydetermine, we successively clip against eachboundary.

    Then check the new endpoint for its region code.

    How to find boundary intersection: To find ycoordinate at vertical intersection, substitute xvalue at the boundary into the line equation ofthe line to be clipped.

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

  • 7/31/2019 Lecture14b Clipping

    6/16

    Sutherland-Hodgman

    Polygon Clipping Input each edge (vertex pair) successively.

    Output is a new list of vertices.

    Each edge goes through 4 clippers.

    The rule for each edge for each clipper is: If first input vertex is outside, and second is inside,

    output the intersection and the second vertex

    If first both input vertices are inside, then just output

    second vertex If first input vertex is inside, and second is outside,

    output is the intersection

    If both vertices are outside, output is nothing

  • 7/31/2019 Lecture14b Clipping

    7/16

    Sutherland-Hodgman Polygon Clipping:

    Four possible scenarios at each clipper

    outside inside

    v1v1

    v2

    outside inside

    v1

    v2

    outside inside

    v1

    v1

    v2

    outside inside

    v1

    v2

    Outside to inside:

    Output: v1 and v2

    Inside to inside:

    Output: v2

    Inside to outside:

    Output: v1

    Outside to outside:

    Output: nothing

  • 7/31/2019 Lecture14b Clipping

    8/16

    Sutherland-Hodgman Polygon Clipping

    v2

    v1

    v3

    Right

    Clipper

    Bottom

    Clipper

    Top

    Clipper

    Left

    Clipper

    v1v2

    v2v3

    v3v1

    v1

    v2

    v2

    v2

    v3v1

    v2v2

    v2v3

    v3v1

    v1v2

    v2

    v3

    v1

    v2 v2v2

    v2v3

    v3v1

    v1v2

    v3

    Figure 6-27, page 332

    v2

    v1v2

    v2 v2v2

    v2v1

    v1v2

    v2v2

    v1

    v2

    v2

    v2

    Edges Output Edges Output Edges Output Edges Output

    Final

  • 7/31/2019 Lecture14b Clipping

    9/16

    Weiler-Atherton Polygon Clipping

    Sutherland-Hodgman

    Weiler-Atherton

  • 7/31/2019 Lecture14b Clipping

    10/16

    Clipping in 3D

    Suppose the view volume has been

    normalized. Then the clipping boundaries

    are just:

    xwmin = -1

    ywmin = -1

    zwmin = -1

    xwmax = 1

    ywmax = 1

    zwmax = 1

  • 7/31/2019 Lecture14b Clipping

    11/16

    Clipping Homogeneous

    Coordinates in 3D Coordinates expressed in homogeneous

    coordinates After geometric, viewing and projection

    transformations, each vertex is: (xh, yh, zh, h)

    Therefore, assuming coordinates have beennormalized to a (-1,1) volume, a point (xh, yh, zh, h) isinside the view volume if:

    -1 < < 1 and -1 < < 1 and -1 < < 1

    xh

    h

    yh

    h

    zh

    h

    Suppose that h > 0, which is true in normal cases, then

    -h < xh < h and -h < yh < h and -h < zh < h

  • 7/31/2019 Lecture14b Clipping

    12/16

    Remember Cohen-Sutherland 2D

    Line Clipping Region Codes?

    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

  • 7/31/2019 Lecture14b Clipping

    13/16

    Cohen-Sutherland Line Clipping

    Region Codes in 2D

    0000

    1001

    0001

    0101 0100 0110

    0010

    10101000

  • 7/31/2019 Lecture14b Clipping

    14/16

    3D Cohen-Sutherland Region

    Codes

    Simply use 6 bits instead of 4.

    4 3 2 1

    Far Near Top Bottom Right Left

    6 5

    Example: If h + xh < 0, then bit 1 is set to 1.

    This is because if -h > xh, then the point is to the left of the viewing volume.

  • 7/31/2019 Lecture14b Clipping

    15/16

    Clipping Polygons

    First, perform trivial acceptance and

    rejection using, for example, its coordinate

    extents.

    Polygons usually split into triangle strips.

    Then each triangle is clipped using 3D

    extension of the Sutherland-Hodgman

    method

  • 7/31/2019 Lecture14b Clipping

    16/16

    Arbitrary Clipping Planes

    Can specify an arbitrary clipping plane: Ax + By

    + Cz + D = 0.

    Therefore, for any point, if Ax + By + Cz + D < 0,

    it is not shown. To clip a line against an arbitrary plane,

    If both end-points are in, then the line is in

    If both end-points are out, then the line is out

    If one end-point is in, and one is out, then we need to

    find the intersection of the line and the plane