line drawing - univie.ac.atvda.univie.ac.at/.../graphics/15w/lecturenotes/14_lines.pdf ·...

38
© Machiraju/Zhang/Möller Line Drawing Introduction to Computer Graphics Torsten Möller / Mike Phillips

Upload: others

Post on 22-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Line Drawing

Introduction to Computer GraphicsTorsten Möller / Mike Phillips

Page 2: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Rendering Pipeline

Hardware

Modelling Transform Visibility

Illumination +Shading

ColorPerception,Interaction

Texture/Realism

Page 3: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Reading

• Angel – Chapter 8.8-8.10

3

Page 4: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Today

• Recap - the graphics pipeline • Rasterizing lines

– brute-force – DDA – Bresenham

• Rasterizing quadrics • Anti-aliasing

4

Page 5: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

• From the modeling stage to image formation • Pipelined approach helps increase system

throughput – Throughput: rate at which data flows through the

system – In a pipeline, data processing in subsequent blocks can

be done in parallel – Especially effective when the same sequence of

operations are to be performed on large quantity of data – true in graphics

The graphics pipeline

5

Page 6: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Vertex processor• Per-vertex operations (vertices define objects/

primitives) • Two main functionalities:

– Coordinate transformations – Color computation at each vertex (shading models)

• Objects/geometry first defined in their own coordinate systems, then transformed into a world space — modeling transformation

• Then objects are transformed from world space into the camera coordinate system — viewing transformation and projection transformation

6

Page 7: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Clipping and primitive assembly

• Model a finite field of vision • Remove objects outside a

finite clipping volume • Need to be done on a primitive

by primitive basis, not on vertices

• Output is a set of primitives whose projections can appear in the image

7

Page 8: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Rasterizer• The rasterizer converts a primitive into a set of

fragments • A fragment stores per pixel information for its

associated primitive, later used to determine whether the fragment contributes to pixel color and to compute the pixel color

– Raster/pixel location (in the frame buffer) – Depth, e.g., to determine whether this fragment “survives” – Interpolated attributes, e.g., color and texture coordinate,

from the previous stages – Alpha value (for blending) – Window ID, etc.

8

Page 9: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Fragment processing• Performs per-fragment operations • Main function is to compute the color at a pixel,

using information stored in the fragments, e.g., depth, alpha, texture coordinates; can also add in fog and other effects

• A (programmable) fragment shader is a program that performs the processing which replaces the OpenGL fixed functionality, e.g., simply using interpolated attributes

• Similar to a vertex shader (per-vertex operations) • Shader programs typically have limited instruction

set9

Page 10: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Drawing or rasterization of primitives first. Consider lines and polygons.

Where are we at now?

Page 11: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Assumptions• Transformation, clipping, projection already done • Primitives to rasterize are actually on the screen • Work with 2D screen coordinates with square

pixels

11

(0, 0)

(N, M)

Page 12: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Primitives

• Polygons • explicit curves

– lines, quadrics • parametric curves/surfaces

– Curves, Surfaces • implicit description • Misc

– particle systems/points, fractals

12

Page 13: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Explicit Descriptions

• Given - an explicit equation y = f(x)

• cannot get multiple values of y • not rotationally invariant • no infinite slope (vertical line) • axis dependent (y depends on x) • specify one variable and resolve for the

other13

Page 14: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Lines

• Given - an explicit line equation y = mx+n

• Which pixels to set?

14

http://bert.stuy.edu/pbrooks/graphics/demos/BresenhamDemo.htm

Page 15: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Scan Converting Lines

• Compute the coordinates of pixels that lies on or near an ideal, infinitely thin line imposed on a 2D raster grid

• Assumptions – line will be 1 pixel thick and will approximate

an infinitely fine line – pixels represented as disjoint circles, centred

on a grid (unless specified otherwise) – integer coordinates of endpoints – pixel on or off (2 states)

15

Page 16: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Scan Converting Lines (2)

• Desirable properties: – constant brightness (irrespective of length or

orientation) – 1 pixel per column (-1 <= slope <= 1), 1

pixel per row (slope > +/- 1) – as close to the ideal/as straight as possible – allow control of pen, line and endpoint styles – drawn as smoothly as possible

(anti-aliasing) – drawn as rapidly as possible

16

Page 17: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Scan Converting Lines (3)

• Difficulties: – brightness and pixel criteria conflict (for bi-

level displays)

17

Page 18: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Basic – Brute force

• Find slope m = rise/run or y = mx + b • increment x by 1 (xi); • calculate yi = mxi + b • pixel (xi, round(yi)) turned on • simple, but inefficient:

– floating point multiplication – addition – round

18

Page 19: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Incremental - DDA• multiplication can

be eliminated:

• called digital differential analyzer (DDA) - after mechanical device that solves differential equations by numerical methods

• Drawbacks: – floating point values (m,y) – round operation – special cases could be done more quickly

19

yi+1 = mxi+1 + b

= m(xi + 1) + b

= yi +m

Page 20: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Lines - Bresenham

• Special case of Midpoint Line Algorithm • uses only integer arithmetic & no

rounding • idea is to provide the best-fit

approximation to a true line by minimizing the error (distance) to the true line

• slope (rest is done with reflection)

20

Page 21: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

• Explicit line equation:

• Implicit line equation:

• Main idea - call on decision variable:

Lines - Bresenham (2)

21

y = mx+ b =�y

�x

x+ b

F (x, y) = x�y � y�x+ h

di = F (xi + 1, yi + 1/2)

= (xi + 1)�y � (yi + 1/2)�x+ h

Page 22: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

• if di < 0, pick O, and:

• if di > 0, pick NO, and:

• if di = 0, pick either one, but consistently

Lines - Bresenham (3)

22

�O = di+1 � di

= F (xi + 2, yi + 1/2) = �y

�NO = di+1 � di

= F (xi + 2, yi + 3/2) = �y ��x

Page 23: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Lines - Bresenham (4)

• Additional issues: – Endpoint order: we want P0 to P1 to look

exactly the same as P1 to P0 – Starting at edge of a clip rectangle: we must

use the midpoint test result rather than computing intersections analytically if we are to ensure the correct sequence of pixels

23

Page 24: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Lines - Bresenham (4)

24

Page 25: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Quadrics - Circles

• Circles, ellipsoids, etc.

• divide in 8 quadrants • What is special

about 8-foldsymmetry?

25

y =p

R

2 � x

2

Page 26: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Quadrics - Circles (2)

• Midpoint Circle Algorithm – trace out arc in 2nd octant and draw the rest

by symmetry – choose between E and SE pixel at each

stage

26

Page 27: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Quadrics - Circles (3)

• incremental - now have higher order

• higher order difference system

27

D(x) = (x+�x)2 � x

2 = 2x�x+�x

2

D(x+�x)�D(x) = 2�x

2

Page 28: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Quadrics - Ellipses

• Can a midpoint algorithm be developed for ellipses? What are the important differences from circles?

• The result is Da Silva's algorithm (the idea is illustrated below):

28

Page 29: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Lines - Anti-Aliasing

• A continuous (zero-width) line is “invisible” in a discrete grid.

• Give line thickness - How? • Signal Processing Approach:

– line is high-frequency – want to avoid aliasing – what to do first?

29

Page 30: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Lines - Anti-Aliasing (2)

• Bandlimit signal - how? • Convolve with smoothing filter - which?

30

Page 31: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Lines - Anti-Aliasing (3)

• Box filter not all that good • convolve it again - why? • Then resample!

31

Page 32: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

Lines - Anti-Aliasing (4)

• Other alternatives? • Can we improve this algorithm?

32

Page 33: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

General Anti-Aliasing: super-sampling

• simple by expensive • simply sample n times within a pixel and

average!

33

Page 34: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

remember …

34

Page 35: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Möller

Aliasing example

35

Page 36: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Möller

Aliasing: Sampling a Zone Plate

Zone plate: sin(x2 + y2)

Sampled at 128 x 128 and reconstructed to 512 x 512 using windowed sinc

Left rings: part of the signal Right rings: aliasing due to undersampling

36

Page 37: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Möller

Point vs. supersampling

37

Page 38: Line Drawing - univie.ac.atvda.univie.ac.at/.../Graphics/15w/LectureNotes/14_lines.pdf · 2016-01-06 · on or near an ideal, infinitely thin line imposed on a 2D raster grid •

© Machiraju/Zhang/Möller

is this better?

38

https://www.youtube.com/watch?v=hqi0114mwtY