Documente Academic
Documente Profesional
Documente Cultură
1
=
1
=
=
> 0
1
<
2
Assumptions:
Elements of Computer Assisted Graphics 8
DDA Algorithm
DDA = Digital Differential Analyzer
x
y
m 1
m > 1
m = 1
= , > 0
+1
=
+ 1
+1
=
+1
+ =
+1 +
=
+ +
+1
=
+m
Two formulas:
= , 0 < < 1
=
1
, > 1
Basic formula:
Elements of Computer Assisted Graphics 9
DDA Algorithm two cases
x
y
m 1
m > 1
m = 1
Case 1: 0 < < 1
+1
=
+ 1
+1
=
+
Case 2: > 1
+1
=
+
1
+1
=
+1
Elements of Computer Assisted Graphics 10
DDA Algorithm basic case
void LineDDA(HDC hdc, int x1, int y1, int x2, int y2){
int dx = x2 - x1;
int dy = y2 - y1;
int x;
float y;
float m = dy / (float)dx;
x = x1;
y = y1;
DisplayPixel(x1, y1);
for(int k = 1; k <= dx; k++) {
x += 1;
y += m;
DisplayPixel(x, y);
}
}
Elements of Computer Assisted Graphics 11
Bresenhams Line Algorithm
Basic idea:
1. Find the closest integer coordinates to the actual line path
2. Use only integer arithmetic
3. Compute iteratively the next point, P
i+1
=F(P
i
)
Elements of Computer Assisted Graphics 12
Bresenham method basic idea
Basic approach:
1. Compute a decision
variable d
i
=f(P
i
, d
i-1
)
2. Depending on the d
i
value
chose the next position E
or NE
x
y
m 1
x
i
x
i
+ 1
y
i
y
i
+ 1
NE
E
Q
n
s
P
i
Elements of Computer Assisted Graphics 13
Bresenham method - mathematics
x
y
m 1
x
i
x
i
+ 1
y
i
y
i
+ 1
NE
E
Q
n
s
P
i
= +, =
= m
+1 +
+1 =
+ 1 m
+ 1
= = 2
+ 1 2
+2 1
Let us consider
= = ( )
= = 2
+ 1 2
+ 2 1
= 2
+ 2 + 2 1
= 2
= 2
+
if
< 0 then E(
+ 1,
)
if
0 then NE(
+1,
+1)
Assumptions: 0 < 1,
<
, <
Elements of Computer Assisted Graphics 14
Bresenham method - mathematics
x
y
m 1
x
i
x
i
+ 1
y
i
y
i
+ 1
NE
E
Q
n
s
P
i
= 2
+1
= 2
+1
2
+1
+
+1
= 2(
+1
) 2(
+1
+1
=
+2 2(
+1
)
if
< 0 then P
+1
= E, and
+1
=
otherwise P
+1
= NE, and
+1
=
+1
Therefore
+1
=
+2, if
< 0
+1
=
+2 2, otherwise
The first value of the decision variable:
0
= 2
1
2
1
+ [2 + (2 1)]
1
=
1
+,
1
=
1
+
2 1 = 2
1
2
1
0
= 2
Bresenham algorithm
void LineBresenham(int x1, int y1, int x2, int y2){
int dx, dy, x, y, d, incrE, incrNE;
dx = x2 - x1;
dy = y2 - y1;
d = 2 * dy - dx;
incrE = 2 * dy;
incrNE = 2 * (dy - dx);
x = x1;
y = y1;
DisplayPixel(x, y);
while(x < x2){
if(d <= 0){
d = d + incrE;
x = x + 1;
}
else{
d = d + incrNE;
y = y + 1;
x = x + 1;
}
DisplayPixel(x, y);
}
}
Elements of Computer Assisted Graphics 15
x
y
m < 1
m = 1
m > 1
Elements of Computer Assisted Graphics 16
Midpoint line algorithm
x
y
m 1
x
i
x
i
+ 1
y
i
y
i
+ 1
NE
E
Q
M
F(x,y)=0
Elements of Computer Assisted Graphics 17
Midpoint line algorithm
x
y
m 1
x
i
x
i
+ 1
y
i
y
i
+ 1
NE
E
Q
M
F(x,y)=0
=
+
, = +
Considering = , = , and =
, = + + = 0, if , is on the line
Q is closer to
NE if
+1,
+
1
2
> 0
E if
+1,
+
1
2
< 0
Elements of Computer Assisted Graphics 18
Midpoint line algorithm
+1,
+
1
2
=
+ 1 +
+
1
2
+
Let
= 2
+1,
+
1
2
= 2
+1 + 2
+
1
2
+ 2
Since = and =
= 2
+1 2
+ 1 +2
+1
= 2
+1
+ 1,
+1
+
1
2
= 2
+1
+ 1 2
+1
+ 1 +2
+1
=
+ 1
+1
=
+1,if
+1
=
, otherwise
Therefore
+1
= 2
+ 1 2
+1 +2 +2 2
+1
=
+2 2, if
+2, otherwise
0
= 2
0
, +1,
0
+
1
2
= 2(
0
0
+ ) + 2
0
= 2
Elements of Computer Assisted Graphics 19
Midpoint line algorithm - pseudocode
void LineMidpoint(int x1, int y1, int x2, int y2){
int dx, dy, x, y, d, incrE, incrNE;
dx = x2 - x1;
dy = y2 - y1;
d = 2 * dy - dx;
incrE = 2 * dy;
incrNE = 2 * (dy - dx);
x = x1;
y = y1;
DisplayPixel(x, y);
while(x < x2){
if(d <= 0){
d = d + incrE;
x = x + 1;
}
else{
d = d + incrNE;
y = y + 1;
x = x + 1;
}
DisplayPixel(x, y);
}
}
General Bresenhams Line Algorithm
Basic Bresenham line algorithm is given for line in the first octant.
To render a general line (A, B):
1. Transform the line (P1, P2) into the line (P1, P2) in the first
octant
2. Compute the raster line (P1, P2)
1. For each point P
1. Compute point P for the initial line
2. Render point P
Elements of Computer Assisted Graphics 20
y
P
P
P1(x1,y1)
P2(x2,y2)
P2(x2,y2)
P1(x1,y1)
General Bresenhams Line Algorithm
Elements of Computer Assisted Graphics 21
y
P1(x1,y1)
P2(x2,y2)
P2(x2,y2)
P1(x1,y1)
x
y
P1(x1,y1)
P2(x2,y2)
P2(x2,y2)
P1(x1,y1)
x
=
Flip about x-axis
0 > > 1
Flip about y=x
=
> 1
General Bresenhams Line Algorithm
Exercises:
Render and explain the Bresenham algorithm transformations for the
following lines:
a. A(7, 5), B(15, 10)
b. A(15, 10), B(7, 5)
c. A(5, 7), B(10, 15)
d. A(10, 15), B(5, 7)
e. A(-5, 7), B(-10, 15)
f. A(-7, 5), B(-15, 10)
g. A(-15, 10), B(-7, 5)
h. A(-15, -10), B(-7, -5)
i. A(-5, -7), B(-10, -15)
j. A(7, -5), B(15, -10)
k. A(15, -10), B(7, -5)
Elements of Computer Assisted Graphics 22
Elements of Computer Assisted Graphics 23
Antialiasing
x
y
Removing the stairstep
appearance of a line
Staircase for raster effect
Need some compensation in
line-drawing algorithm for the
raster effect
Elements of Computer Assisted Graphics 24
Antialiasing
Jugged edges
Small objects
unvisible, disturbed
Textures
toothed edges
Elements of Computer Assisted Graphics 25
Antialiasing
Supersampling
Postfiltering
Stochastic sampling
Area sampling
Prefiltering
Elements of Computer Assisted Graphics 26
Supersampling (Postfiltering)
Increasing resolution
Supersampling (Postfiltering)
The intensity of each pixel depends on the number of subpixels intersected
by the line
Elements of Computer Assisted Graphics 27
6
2 3
5
6
1
Supersampling (Postfiltering)
Elements of Computer Assisted Graphics 28
6
3 6
7
8
2
The intensity of each pixel depends on the number of subpixels that are
inside the rectangle (their center is inside the rectangle
1 2 2 1
2 3 3 2
2 3 3 2
1 2 2 1
1 2 2 1 1 2 2 1
2 3 3 2 2 3 3 2
2 3 3 2 2 3 3 2
1 2 2 1 1 2 2 1
1 2 2 1 1 2 2 1
2 3 3 2 2 3 3 2
2 3 3 2 2 3 3 2
1 2 2 1 1 2 2 1
1 2 2 1
2 3 3 2
2 3 3 2
1 2 2 1
Weighted supersampling
Elements of Computer Assisted Graphics 29
1 2 2 1
2 3 3 2
2 3 3 2
1 2 2 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
Assign weights to each subpixel (higher values near the center of the pixel)
Unweighted Weighted
Stochastic sampling
Elements of Computer Assisted Graphics 30
Jitter
Pick n random sample
points
Uniform Jitter
Pick n random sample
points (one sample from
each region)
Poisson Disk
Pick n random sample
points
Area Sampling (Prefiltering)
Compute each pixels intensity proportional to
the area covered by the unit rectangle
Elements of Computer Assisted Graphics 31
Elements of Computer Assisted Graphics 32
Area Sampling - solutions
1. Unweighted area sampling
I = f(d)
Intensity of a pixel decreases as the distance between the pixel center
and the edge increases
A primitive does not influence the intensity of a pixel at all if there is no
intersection
Equal areas contribute equal intensity
2. Weighted area sampling
I = f (A, d), weighting function, filter function
The pixel represent a circular area larger than the square tile
The primitive intersects the circular area
The intersection area contributes to the intensity
e.g. Goupta-Sproull incremental method for antialiasing lines
Elements of Computer Assisted Graphics 33
Filters
Box filter
Cone filter