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 x' = xcos - ysin y' = xsin + ycos where is angle of rotation and prime indicates new point in space. Rotation: 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