Graphics in java by SanjuDudeja

VIEWS: 30 PAGES: 33

More Info
									Graphics in Java
     Part I
             Lecture Objectives
• Understand the basic concepts of Computer
  Graphics
• Learn about Computer Graphics Applications
• Learn about the Coordinate System of Computer
  Graphics
• Learn about the basic and advanced
  transformations in Computer Graphics
             Lecture Objectives

• Outline:
 Graphics Applications
 What is Computer Graphics?
 Representations in Graphics
 Supporting Disciplines
 Coordinate Systems
 Basic and Advanced Transformations
               Graphics Applications
• Entertainment: Cinema




                        A Bug’s Life (Pixar)

Pixar: Monster’s Inc.
    Graphics Applications (Cont’d)
• Medical Visualization




                                            The Visible Human Project
        MIT: Image-Guided Surgery Project
    Graphics Applications (Cont’d)
• Computer Aided Design (CAD)




• Scientific Visualization
    Graphics Applications (Cont’d)
• Training




  Designing Effective Step-By-Step Assembly Instructions (Maneesh Agrawala et. al)
   Graphics Applications (Cont’d)
• Game Modeling and
  Simulation




                                                                  GT Racer 3




                      Polyphony Digital: Gran Turismo 3, A Spec
   Graphics Applications (Cont’d)
• The major
  application that we
  will be dealing with
  extensively in the
  next coming lectures
  is that of developing
  graphical user
  interfaces
     Windows
     Menus
     Buttons
     Textboxes
     ...
     What is Computer Graphics?
• Computer graphics: generating 2D images of a
  3D world represented in a computer.
• Main tasks:
   modeling: (shape) creating and representing the geometry
    of objects in the 3D world
   rendering: (light, perspective) generating 2D images of the
    objects
   animation: (movement) describing how objects change in
    time
      Representations in Graphics
A) Vector Graphics:
• Image is represented by continuous
  geometric objects: lines, curves, etc.


B) Raster Graphics:
• Image is represented as a rectangular grid of
  colored pixels
   PIXEL = PIcture ELement
                 X
             Raster Graphics
• Generic
• Image processing techniques
• Geometric Transformation: loss of information
• Relatively high processing time
   in terms of the number of pixels

• Realistic images, textures, ...
• Examples: Paint, PhotoShop, ...
    Raster Graphics (Cont’d)
Sample Image Processing Techniques

 • Edge Detection




 • Image Denoising
           Vector Graphics
Vector graphics
 • Graphics objects: geometry + color
 • Relatively low processing time
    in terms of the number of graphic objects
 • Geometric transformation possible without
   loss of information (zoom, rotate, …)
 • Examples: PowerPoint, CorelDraw, SVG, ...
Scalable Vector Graphics (SVG)
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
  xmlns="http://www.w3.org/2000/svg" version="1.1">
 <desc>Example polygon01 - star and hexagon</desc>
 <!-- Show outline of canvas using 'rect' element -->
 <rect x="1" y="1" width="1198" height="398"
    fill="none" stroke="blue" stroke-width="2" />
 <polygon fill="red" stroke="blue" stroke-width="10"
         points="350,75 379,161 469,161 397,215
             423,301 350,250 277,301 303,215
             231,161 321,161" />
 <polygon fill="lime" stroke="blue" stroke-width="10"
         points="850,75 958,137.5 958,262.5
             850,325 742,262.6 742,137.5" />
</svg>
From Modeling to Processing


              Image Analysis
Math. Model   (pattern recognition)       Image




              Image Synthesis
              (Rendering)



 Modeling                             Image processing
          Supporting Disciplines
• Computer science (algorithms, data structures,
  software engineering, …)
• Mathematics (geometry, numerical, …)
• Physics (Optics, mechanics, …)
• Psychology (Colour, perception)
• Art and design
    Computer Graphics: Transformations

• Types of transformations

• Screen and World Coordinate Systems

• Matrix representations of transformations

• 2D Transformations

• 3D Transformations
         Graphical Transformations: Basics
• There are several standard graphics transformation.

• All involve plotting images on the screen in terms of points
  and the lines connecting those points.

• Each programming language has its own particular constructs
  for drawing items on the screen.
    •"screen" here includes printer output and invisible background
    buffers for efficient cached graphics (see Double buffering later)

   • Regardless of language particulars, the various graphics
     transformations themselves remain logically the same.

• Here, will deal with the logic of the transformations.

• Consult language books/manuals re: how to do the mechanics
  of the actual drawing.
  Graphical Transformations: Basics (Cont’d)

• Translation: moving an item from one location to another,
e.g., moving thru a room or landscape.

• Rotation: changing the orientation of an item at a
  given location, e.g., spinning around.

• Scaling: changing the size of an item as it appears
  on the screen, e.g., an item gets larger or smaller.

• Clipping: knowing where to stop drawing an item
  because it partially extends beyond the screen.
      Graphical Transformations: Advanced
More advanced operations:
• Hidden surface algorithms: dealing with (removing) aspects
of items that are hidden from view.

• Representing 3D shapes: how to represent 3D items in a
2D medium.

• Displaying depth relationships: how to achieve realistic
  perspective.

• Shading, reflection, ambient lighting: how to achieve
realistic lighting effects.

In this lecture, will deal only with basics: translation,
scaling, and rotation.
                 World and Viewport
Basic ideas: World vs. Viewport




            The representation of the world


                                    Viewport into
                                     that world




 • Representation of world stays the same.
 • View of world changes as you move around in it, i.e., the
 viewport moves.
                   Coordinates
• Both viewport and the "world" have coordinate systems.
• The entire computer screen is a set of pixels (short for
picture elements). So is a window on the desktop of a
screen. So is a canvas inside a window.
• Pixels form a two-dimensional grid with the coordinates
(0,0) being the upper-left and the max number of pixels
in each dimension forming the lower-right (say, your
system provides 1024,768).
• So the screen coordinates are as follows:

                  (0,0)


                             (1024, 768)
                  World Coordinates
• The lines to be drawn are given in world coordinates with
the origin fixed at the center of the computer screen, e.g.,
     (1024, 768 resolution means a center point of 512, 384)

• All the transformations are:
    • applied to the world coordinates
    • then mapped to the real (screen) coordinates.

• This allows of computation of the logical transformations to
be separated from hard details of viewing surface.

• Do not want to tie the model to available resolution.
Mapping from world coordinates to screen coordinates
allows us to keep two levels of abstraction separate: model
vs. device
                World Coordinates (Cont’d)

     To visualize it:              y-axis             (512, 384, 0)




                                                         x-axis


                          z-axis                      (512, -384, 0)

                              (0, 0, 0) in world coordinates
                              (512,384,0) in real coordinates



• Note that the Z-axis comes "at you" out of the computer
  screen, perpendicular to both the X-axis and the Y-axis.
             World Coordinates (Cont’d)
For example:
• world point (0,0,0) is really (512, 384) when you plot
(display) it.
• world point (100, -20,0) is really (612, 404) when you plot it.

• Notice:
  real X coordinate gets larger with positive X world
coordinates.

• Notice:
  real Y coordinates gets larger with negative Y world
coordinates.
                         Translation
Basic transformations: (for simplicity, 2D)


Translation: x' = x + Dx
             y' = y + Dy

where Dx is relative distance in x dimension,
      Dy is relative distance in y dimension,
      prime indicates new point in space.

Computation:

       [x' y'] = [x y] + [Dx Dy]
       P' = P + T
Translation (Cont’d)


    Each point gets translated




        [x' y'] = [x y] + [Dx Dy]
                              Scaling
Scaling:        x' = x * Sx
                y' = y * Sy

where Sx is scale factor for x dimension,
      Sy is scale factor for y dimension,
      prime indicates new point in space.

Computation:
   defining S as [ Sx 0 ]
                 [ 0 Sy ]

      [x' y'] = [x y] * [ Sx 0 ]
                        [ 0 Sy ]

      P' = P * S
                    Scaling (Cont’d)




                           [x' y'] = [x y] * [ Sx 0 ]
                                             [ 0 Sy ]




Question: What about stretching unequally in two dimensions?
                         Rotation
Rotation:   x' = xcos  - ysin 
            y' = xsin  + ycos 
where  is angle of rotation and prime indicates new point in
space.

Computation:
           [x' y'] = [x y] * [ cos  sin ]
                             [-sin  cos ]
           P' = P * R
Note: positive angles are counter-clockwise from x toward y;
for negative angles (clockwise) use identities:
        cos(- ) = cos  ,
    and
        sin(- ) = -sin 
Rotation (Cont’d)




      [x' y'] = [x y] * [ cos  sin ]
                        [-sin  cos ]
           Rotation Around a Fixed Point
Notes on Rotation:
• There is a difference between:
         "rotation around center point of object“
   and
         "rotation around origin of Cartesian world"
Example:
• Imagine a ball on a tether mounted to pole
• Do you want the ball itself to spin around on the end of
the tether?
• Or do you want the ball-and-tether to rotate around the
pole?
To rotate an object about its own center point:
    • first translate object to origin,
    • then do rotation
    • then translate back

								
To top