1 Lecture 6 Attributes of graphical primitives Colors Colors in OpenGL Algorithms for scan-conversion
2 Colors It is difficult to explain colors: they should be experienced. Color is nothing more that wavelengths of light at a certain frequency. Actually, the human eye is only said to perceive a small fraction of the total light available. Certain lights called Gamma Rays, X-rays, and Ultraviolet lights are too low of a frequency for humans to see. Lights like Infrared, Microwaves, and Radio waves, are too high of a frequency for the human eye to see. Humans only see a small portion of light between these frequencies and we calls these lights color.
3 Colors The color of an object is evident by the amount of light it reflects. For example, a red apple reflects mostly red light, and absorbs mostly all other colors. The color white is obtained when all colors are reflected off an object (no colors absorbed) giving the object appearance of white. Black is the absorption of all colors. It is not considered as a color. Black is considered the absence of color, and therefore is not allowed to join its color family.
4 Colors: RGB Model There are different ways to choose color for your drawing. The easiest and most powerful way is to use RGB color. RGB color stands for Red, Green, and Blue, and is called additive color. It is given this name because RGB starts with the absence of color, and then adds elements of red, green, and blue to achieve the desired color.
5 Colors: RGB Model It is not possible to obtain all colors with RGB model, or with any other color model. RGB just matches a color as close as possible. Usually there are 256 different values for each red, green, and blue. This also means that there are about 16.7 million different colors available (256*256*256 = 2 8 * 2 8 * 2 8 ). Some systems and languages, such as OpenGL, uses a similar idea with RGB color, except that they may use numbers from 0.0 to 1.0. Theoretically this means that there is an infinite amount of colors formed from RGB because there is an infinite amount of numbers between 0 and 1.
6 Colors RGB model
7 Colors RGB Color cube
8 Colors CMY model
9 Colors CMY cube
10 Colors HSV model (hue, saturation, value): used by artists Called also HSL model (L-light) Hue: the name that we give to a color: red, yellow, cyan, etc. Saturation: how pure the color is, that is how far is a hue from the same hue mixed with white so that the color has more pastel shade Value/Light - how bright the color appear
11 Colors HSV model (hue, saturation, value)
12 Levels of Gray Levels of gray/colors: instead of 0/1 more digits
13 Levels of Gray Reducing the levels of gray: Original scanned picture
14 Levels of Gray Reducing the levels of gray: Three bits per pixel
15 Levels of Gray Reducing the levels of gray: One bit per pixel
16 Color palette Color table (palette)
17 Colors in OpenGL OpenGL uses RGB color model The values of red, green, and blue are numbers from 0.0 to 1.0.
18 Colors in OpenGL The instruction glColor3f( float red, float green, float blue ) sets a color. The syntax is the same as in the sample program for drawing a triangle. Problem: Draw 5 triangles with different colors. Write the values of RGB and the color obtained.
19 Colors in OpenGL Syntax of OpenGL instructions: FunctionName2i or FunctionName3f 2 or 3 means number of parameters: 2 or 3 i - integer values, f- float values, d-double values. All the following instructions will give the same color - red: glColor1f( 1.0 ); glColor1d( 1.0 ); glColor4i( 1, 0, 0, 0 );
20 Colors in OpenGL There is an optional fourth value in the color definition called the alpha value. Alpha values are used for displaying different effects, e.g., blending, transparency, lighting and shadows. OpenGL may interpolate different colors. Problem: Use the sample triangle program and assign different colors for each vertex. Describe the result.
21 Colors in OpenGL glBegin( GL_TRIANGLES ); // Begin a triangle glColor3f( 1.0, 0.0, 0.0 );// Red color glVertex3f( 0.25, 0.25, 0.0 ); glColor3f( 0.0, 1.0, 0.0 );// Green color glVertex3f( 0.75, 0.25, 0.0 ); glColor3f( 0.0, 0.0, 1.0 );// Blue color glVertex3f( 0.75, 0.75, 0.0 ); glEnd(); // End the triangle
23 Triangle Scan-Conversion
24 Simple Algorithm
25 Inside Triangle Test
26 Inside Triangle Test
27 Triangle Sweep-Line Algorithm
28 Triangle Sweep-Line Algorithm
29 Polygon Scan Conversion
30 Inside Polygon Rule
31 Polygon Sweep-Line Algorithm
32 Polygon Sweep-Line Algorithm
33 FloodFill Algorithm
34 Scan Conversion of Polygons: Hardware Conversion