Anda di halaman 1dari 15

Computer Aided Design

GEOMETRIC MODELING USING


Interactive

ICG
M .Elango
Lecturer in Mechanical Engineering
Thiagarajar college of Engineering
Madurai
Types of Computer Graphics
A local area network - connected with CAD Workstation
Interactive Computer Graphics

User input

Application

Screen image

7
Representations in graphics
Vector Graphics
• Image is represented by continuous geometric
objects: lines, curves, etc.

Raster Graphics
• Image is represented as an rectangular grid of
coloured squares

8
Representations in graphics
Vector Graphics
• Image is represented by continuous geometric
objects: lines, curves, etc.

Raster Graphics
• Image is represented as an rectangular grid of
coloured squares

9
Vector graphics
• Graphics objects: geometry + colour
• Complexity ~ O(number of objects)
• Geometric transformation possible without
loss of information (zoom, rotate, …)
• Diagrams, schemes, ...
• Examples: PowerPoint, CorelDraw, ...

10
Raster graphics

• Generic
• Image processing techniques
• Geometric Transformation: loss of information
• Complexity ~ O(number of pixels)
• Jagged edges, anti-aliasing
• Realistic images, textures, ...
• Examples: Paint, PhotoShop, ...
11
Conversion
Vector graphics

Pattern
Rasterization,
recognition
Scan conversion

Raster graphics
12
line-drawing algorithm
dx = x2 - x1
dy = y2 - y1
for x from x1 to x2
{ y = y1 + (dy) * (x - x1)/(dx)
plot(x, y) }
It is assumed here that the points have already been ordered so that
x2 > x1. This algorithm works just fine when dx > = dy, but it is quite slow
on a digital computer, as it requires floating-point calculations. If dx <
dy, the line becomes quite sparse, and in the limiting case of dx = 0,
only a single point is plotted!

function line(x0, x1, y0, y1)


int deltax := x1 - x0
int deltay := y1 - y0
real error := 0 real deltaerr := deltay / deltax // Assume deltax != 0 (line is
not vertical), // note that this division needs to be done in a way that
preserves the fractional part int y := y0 for x from x0 to x1 plot(x,y)
error := error + deltaerr if abs(error) ≥ 0.5 then y := y + 1 error := error -
1.0
Bresenham's algorithm chooses the integer y corresponding to the pixel center
that is closest to the ideal (fractional) y for the same x; on successive columns y
can remain the same or increase by 1. The general equation of the line through
the endpoints is given by:

Since we know the column, x, the pixel's row, y, is given by rounding this
quantity to the nearest integer:

The slope (y1 − y0) / (x1 − x0) depends on the endpoint coordinates only and can
be precomputed, and the ideal y for successive integer values of x can be
computed starting from y0 and repeatedly adding the slope.
In practice, the algorithm can track, instead of possibly large y values, a small
error value between −0.5 and 0.5: the vertical distance between the rounded
and the exact y values for the current x. Each time x is increased, the error is
increased by the slope; if it exceeds 0.5, the rasterization y is increased by 1
(the line continues on the next lower row of the raster) and the error is
decremented by 1.0.
function line(x0, x1, y0, y1)
boolean steep := abs(y1 - y0) > abs(x1 - x0)
if steep then
swap(x0, y0)
swap(x1, y1)
if x0 > x1 then
swap(x0, x1)
swap(y0, y1)
int deltax := x1 - x0
int deltay := abs(y1 - y0)
real error := 0
real deltaerr := deltay / deltax
int ystep
int y := y0
if y0 < y1 then ystep := 1 else ystep := -1
for x from x0 to x1
if steep then plot(y,x) else plot(x,y)
error := error + deltaerr
if error ≥ 0.5 then
y := y + ystep
error := error - 1.0

*** Some Exercises On AutoCAD using Points and Line Command ****

Anda mungkin juga menyukai