Computer Graphics C Version 2nd Edition Donald Hearn Ppt
Computer Graphics By Donald Hearn 2nd Edition Computer graphics c version pdf hitesh patel, computer graphics c version pdf hitesh patel. Computer graphics.
Attributes of Output Primitives. 1. By: Renita Josna Santhmayora, Lecturer in Compuer Science Dept, Sri Venkataramana Swamy College, Bantwal. Structure: Definition Line Attribute Curve Attribute Color and Grayscale Level Area Filled Attribute Text and Characters.
The way a primitive is to be displayed is referred to as an Attribute Parameter. Some attribute parameters include color,size etc. El kulubud daria pdf.
Different ways to incorporate attribute changes: Extend the parameter list associated with each primitive Maintain a system list of current attribute values and use separate functions to set attributes. Basic attributes of a straight line segment are its type, its width, and its color. In some graphics packages, lines can also be displayed using selected pen or brush. The line-type attribute include solid lines, dashed lines, and dotted lines. We modify a line drawing algorithm to generate such lines by setting the length and spacing of displayed solid sections along the line path.
A dashed line could be displayed by generating an inter dash spacing that is equal to the length of the solid sections. Both the length of the dashes and the inter dash spacing are often specified as user options. A dotted line can be displayed by generating very short dashes with the spacing equal to or greater than the dash size. To set line type attributes in a PHICS application program, a user invokes the function setLinetype (It) where parameter lt is assigned a positive integer value of 1,2,3, or 4 to generate. lines that are, respectively, solid, dashed, dotted, or dash-dotted.
Raster line algorithms display line-type attributes by plotting pixel spans. For the various dashed, dotted, and dot- dashed pattern., the line-drawing procedure. outputs sections of contiguous pixels along the line path, skipping over a number of intervening pixels between the solid spans. Pixel counts for the span length and interspan spacing can be specified in a pixel mask, which is a string containing the digits I and 0 to indicate which positions to plot along the line path. The mask 1111000, for instance, could be used to display a dashed line with a dash length of four pixels and an interdash spacing of three pixels. Line- width options depends on the capabilities of the output device. A heavy line on video monitor could be displayed as adjacent parallel lines, while a pen plotter might require pen changes.
We set the line-width attribute with the command: using setLineWidthScaleFactor(lw); Line-width parameter lw is assigned a positive number to indicate the relative width of the line to be displayed. A value of 1 specifies a standard-width line. On pen plotter, for instance, a user could set lw to a value of 0.5 to plot a line whose width is half that of the standard line.
Values greater than 1 produce lines thicker than the standard. For raster implementation, a standard-width line is generated with single pixels at each sample position.
Other-width link line Attributes are displayed as positive integer multiples of the standard line by plotting additional pixels along adjacent parallel line paths. For lines with slope magnitude less than 1, we can modify a line-drawing routine to display thick lines by plotting a vertical span of pixels at each x position along the line. The number of pixels in each span is set equal to the integer magnitude of parameter lw. For lines with slope magnitude greater than 1, we can plot thick lines with horizontal spans, alternately picking up pixels to the right and left of the line path. We can adjust the shape of the line ends to give them a better appearance by adding line caps.
One kind of line cap is the butt cap obtained by adjusting the end positions of the component parallel lines so that the thick line is displayed with square ends that are perpendicular to the line path. If the specified line has slope m, the square end of the thick line has slope - l / m.
32 Flavors By Yfb
Another line cap is the round cap obtained by adding a filled semicircle to each butt cap. The circular arcs are centered on the line endpoints and have a diameter equal to the line thickness. A third type of line cap is the projecting square cap. Here, we simply extend the line and add butt caps that are positioned one-half of the line width beyond the specified endpoints. We can generate thick polylines that are smoothly joined at the cost of additional processing at the segment endpoints. There three possible methods for smoothly joining two line segments.
miter join round join beveI join. A miter join is accomplished by extending the outer boundaries of each of the two lines until they meet. A round join is produced by capping the connection between the two segments with a circular boundary whose diameter is equal to the line width. a belevel join is generated by displaying the line segments with butt caps and filling in the triangular gap where the segments meet. With some packages, lines can be displayed with pen or brush selections. Options in this category include shape, size, and pattern.
These shapes can be stored in a pixel mask that identifies the array of pixel positions that are to be set along the line path. A polyline routine displays a line in the current color by setting this color value in the frame buffer at pixel locations along the line path using the setpixel procedure. The number of color choices depends on the number of bits available per pixel in the frame buffer.
We set the line color value in PHlCS with the function. Nonnegative integer values, corresponding to allowed color choices, are assigned to the line color parameter lc. A line drawn in the background color is invisible, and a user can erase a previously displayed line by respecifying it in the background color. An example of the use of the various line attribute commands in an applications program is given by the following sequence of statements:.
setLineType (2 ); setLinewidthScaleFactor ( 2:; setPolylinesColourIndex ( 5 ); polyline ( n l, wcpolnts1): setPolyline:clourIndex (61; polyline (nl,wcpoints2):. Parameters for curve attributes are the same as those for line segments. We can display curves with varying colors, widths, dotdash patterns, and available pen or brush options. Methods for adapting curve-drawing algorithms to accommodate attribute selections are similar to those for line drawing. Raster curves of various widths can be displayed using the method of horizontal or vertical pixel spans.
Computer Graphics C Version 2nd Edition M
Where the magnitude of the curve slope is less than1, we plot vertical spans; where the slope magnitude is greater than 1, we plot horizontal spans. General purpose raster-scan systems, usually provide a wide range of colors, while random- scan monitors typically offer only a few color choices, if any. Color options are numerically coded with values ranging from 0 through the positive integers.
For CRT monitors, these color codes are then converted to intensity level settings for the electron beams. With color plotters, the codes could control ink-jet deposits or pen selections.
In a color raster system, the number of color choices available depends on the amount of storage provided per pixel in the frame buffer. color-information can be stored in the frame buffer in two ways: We can store color codes directly in the frame buffer, or we can put the color codes in a separate table and use pixel values as an index into this table. With the direct storage scheme, whenever a particular color code is specified in an application program, the corresponding binary value is placed in the frame buffer for each-component pixel in the output primitives to be displayed in that color.
A minimum number of colors can be provided in this scheme with 3 bits of storage per pixel, as shown in Table. Each of the three bit positions is used to control the intensity level (either on or off) of the corresponding electron gun in an RGB monitor. Adding more bits per pixel to the frame buffer increases the number of color choices. With 6 bits per pixel, 2 bits can be used for each gun. This allows four different intensity settings for each of the three color guns, and a total of 64 color values are available for each screen pixel. With a resolution of 1024 by 1024, a full-color (24bit per pixel) RGB system needs 3 megabytes of storage for the frame buffer. Color tables are an alternate means for providing extended color capabilities to a user without requiring large frame buffers.
Use of color tables to reduce frame-buffer storage requirements. A possible scheme for storing color values in a color lookup table (or video lookup table),where frame-buffer values art- now used as indices into the color table. A user can set color-table entries in a PHIGS applications program with the function setColourRepresentation (ws, ci, colorptrl). Parameter ws identifies the workstation output device; parameter ci specifies the color index, and parameter colorptr points to a hio of RGB color values (r,g, b) each specified in the range from 0 to 1. An example of possible table entries for color monitors is given. There are several advantages in storing color codes in a lookup table. Reasonable' number of simultaneous colors without requiring large frame buffers.
For most applications, 256 or 512 different colors are sufficient for a single picture. Table entries can be changed at any time. Visualization applications can store values for some physical quantity, such as energy, in the frame buffer and use a lookup table to try out various color encodings without changing the pixel values. With monitors that have no color capability, color functions can be used in an application program to set the shades of gray, or grayscale, for displayed primitives.
Numeric values over the range from 0 to 1 can be used to specify grayscale levels, which are then converted to appropriate binary codes for storage in the raster. When multiple output devices are available at an installation, the same color-table interface may be used for all monitors. with the display intensity corresponding to a given color index ci calculated as intensity = 0.5min(r, g, b) + max(r, g, b). Options for filling a defined region include a choice between a solid color or a patterned fill and choices for the particular colors and patterns.
These fill options can be applied to polygon regions or to areas defined with curved boundaries, depending on the capabilities of the available package. In addition, areas can be painted using various brush styles, colors, and transparency parameters. Areas are displayed with three basic fill styles: hollow with a color border, filled with a solid color, or filled with a specified pattern or design.
A basic fill style is selected in a PHIGS program with the function Values for the fill-style parameter fs include hollow, solid, and pattern. Another value for fill style is hatch, which is used to fill an area with selected hatching patterns-parallel lines or crossed lines. Hollow areas are displayed using only the boundary outline, with the interior color the same as the background color. A solid fill is displayed in a single color up to and including the borders of the region. The color for a solid interior or for a hollow area outline is chosen with where fill color parameter fc is set to the desired color code.
A polygon hollow fill is generated with a line drawing routine as a closed polyline. Solid fill of a region can be accomplished with the scan-line procedures. Other fill options include specifications for the edge type, edge width, and edge color of a region.
These attributes are set independently of the fill style or fill color, and they provide for the same options as the line-attribute parameters. We select fill patterns with where pattern index parameter pi specifies a table position. For example, the following set of statements would fill the area defined in the fill Area command with the second pattern type stored in the pattern table:.
setInteriorStyle ( p a t t e r n ); setinteriorStyleIndex ( 2 ); fillArea (n, points); For fill style pattcm, table entries can be created on individual output devices with SetPatternRepresentatlon (w s, p., nx, ny, cp) Parameter pi sets the pattern index number for workstation code ws, and cp is a two- dimensional array of color codes with nx columns and ny rows. Color array cp in this example specifies a pattern that produces alternate red and black diagonal pixel lines on an eight-color system. When a color array cp is to be applied to hll a region, we need to specify the size of the area that is to be covered by each element of the array. We do this by setting the rectangular coordinate extents of the pattern: setpatternsize (dx, dy) where parameters dx and dy give the coordinate width and height of the array mapping.
A reference position for starting a pattern fill is assigned with the statement setPatcernReferencePoint (position). Parameter posit ion is a pointer to coordinates ( x p, yp) that fix the lower left corner of the rectangular pattern. From this starting position, the pattern is replicated in the x and y directions until the defined area is covered by nonover-lapping copies of the pattern array. The process of filling an area with a rectangular pattern is called tiling and. Rectangular fill patterns are sometimes referred to as tiling patterns. To illustrate the use of the pattern commands, the following program example displays a black-and-white pattern in the interior of a parallelogram fill area.
Hatch fill is applied to regions by displaying sets of parallel lines. The fill procedures are implemented to draw either single hatching or cross hatching. Spacing and slope for the hatch lines can be set as parameters in the hatch table. On raster systems, a hatch fill can be specified as a pattern array that sets color values for groups of diagonal pixels. In many systems, the pattern reference point (xp,yp) is assigned by the system. For any fill region, the reference point can be chosen as the lower left corner of the bounding rectangle (or bounding box) determined by the coordinate extents of the region. If the row positions in the pattern array are referenced in reverse (that is, from bottom to top starting at I), a pattern value is then assigned to pixel position (1, y) in screen or window coordinates as setpixel (x,y, cp(y mod ny + 1, x mod nx + 1) ) Where ny and nx specify the number of rows and number of columns in the pattern array.
The pattern and background colors can be combined using Boolean operations, or the pattern colors can simply replace the background colors. How the Boolean and replace operations for a 2 by 2 fill pattern would set pixel values on a binary (black and white) system against a particular background pattern.
Modified boundary-fill and flood-fiII procedures that are applied to repaint areas so that the fill color is combined with the background colors are referred to as soft-fill. One use for these fill methods is to soften the fill colors at object borders that have been blurred to antialias the edges. Another is to allow repainting of a color area that was originally filled with a semitransparent brush, where the current color is then a mixture of the brush color and the background colors 'behind' the area. In either case, we want the new fill color to have the same variations over the area as the current fill color.
The appearance of displayed characters is controlled by attributes such as font, size, color, and orientation. Attributes can be set both for entire character strings (text) and for individual characters defined as marker symbols. First of all, there is the choice of font (or typeface), which is a set of characters with a particular design style such as New York, Courier, Helvetica, London, 'Times Roman, and various special symbol groups. The characters in a selected font can also be displayed with assorted underlining styles (solid, dotted, double), in boldface, in italics. And in outline or shadow styles. A particular font and associated style is selected in a PHlGS program by setting an integer code for the text font parameter t f in the function.
Color settings for displayed text are stored in the system attribute list and used by the procedures that load character definitions into the frame buffer. When a character string is to be displayed, the current color is used to set pixel values in the frame buffer corresponding to the character shapes and positions setTextFont(tf). Control of text color (or intensity) is managed from an application program with where text color parameter tc specifies an allowable color code. Character size is specified by printers an compositors in points, where 1 point is 0.013837 inch. Point measurements specify the size of the body of a character but different fonts with the same points specifications can have different character size depending on the design of the typeface. SetTextColorIndex(tc).
The distance between the bottom line and the top line of the character body is the same for all characters in a particular size and typeface, but the body width may vary. Character height is defined as the distance between the baseline and the cap line of characters. Text size can be adjusted without changing the width-to-height ratio of characters with setChatacterHeight(ch) Parameter ch is assigned a real value greater than 0 to set the coordinate height of capital letters: the distance between baseline and capline in user coordinates.
The width only of text can be set with the function setCharacterExpansionFactor(cw) where the character-width parameter cw is set to a positive real value that scales the body width of characters. Spacing between characters is controlled separately with setCharacterSpacing(cs) where the character-spacing parameter cs can he asslgned any real value. The value assigned to cs determines the spacing between character bodies along print lines. Negative values for cs overlap character bodies; positive values insert space to spread out the displayed characters.
The orientation for a displayed character string is set according to the direction of the character up vector: setCharacterUpVector(upvect) Parameter upvect in this function is assigned two values that specify the x and y vector components. Text is then displayed so that the orientation of characters from baseline to capline is in the direction of the up vector. For example, with upvect = (I, I), the direction of the up vector is 45' and text would be displayed. It is useful in many applications to be able to arrange character strings vertically or horizontally. An attribute parameter for this option is set with the statement setTextPath(tp) where the text-path parameter tp can be assigned the value: right, left, up, or down. A procedure for implementing this option must transform the character patterns into the specified orientation before transferring them to the frame buffer. Another handy attribute for character strings is alignment.
This attribute specifies how text is to be positioned with respect to the start coordinates. Alignment attributes are set with setAlignment(h,v) where parameters h and v control horizontal and vertical alignment. Horizontal alignment is set by assigning h a value of left, centre, or right. Vertical alignment is set by assigning v a value of top, cap, half, base, or bottom. A precision specificitionf or text display is given with setTextPrecision(tpr) where text precision parameter tpr is assigned one of the values: string, char, or stroke. The highest-quality text is displayed when the precision parameter is set to the value stroke. A marker symbol is a single character that can he displayed in different colors and in different sizes.
We select a particular character to be the marker symbol with setMarkerType(mt) where marker type parameter mt is set to an integer code. Typical codes for marker type are the integers 1 through 5, specifying, respectively, a dot (.), a vertical cross (+), an asterisk (.), a circle (o), and a diagonal cross (X). DispIayed marker types are centered on the marker coordinates.
We set the marker size with setMarkerSizeScaleFactor (ms) with parameter marker size ms assigned a positive number. Values greater than 1 produce character enlargement; values less than 1 reduce the marker size. Marker color is specified with setPol y mark erColouIndex (mc ) A selected color code for parameter mc is stored in the current attribute list and used to display subsequently specified marker primitives.
Assuming the reader has no prior familiarity with computer graphics, the authors present basic principles for design, use, and understanding of computer graphics systems. The book also contains the following additional features: discussion of hardware and software components of graphics systems, as well as various applications; exploration of algorithms for creating and manipulating graphics displays, and techniques for implementing the algorithms; use of programming examples written in C to demonstrate the implementation and application of graphics algorithms; and exploration of GL, PHIGS, PHIGS+, GKS, and other graphics libraries. In addition, this book includes an appendix containing detailed discussions on a variety of mathematical methods used in graphics algorithms such as analytic geometry, linear algebra, vector and tensor manipulations, complex numbers, and numerical analysis. The C Version of this best seller can serve as a basic or supplemental text for undergraduate and graduate level courses. It is also used widely for professional self-study geared to the specific interests of the reader. Donald Hearn' joined the Computer Science faculty at the University of Illinois at Urbana-Champaign in 1985. Hearn has taught a wide range of courses in computer graphics, scientific visualization, computational science, mathematics, and applied science.
Also, he has directed numerous research projects and published a variety of technical articles in these areas. Pauline Baker' is on the faculty of the Computer Science Department and the School for Informatics at Indiana University-Purdue University.
Dr- Baker is also a Distinguished Scientist and the Director of the Pervasive Technology Lab for Visualization and Interactive Spaces, and she collaborates with research groups on the use of computer graphics and virtual reality to explore scientific data. Previously, Dr. Baker was the Associate Director for Visualization and Virtual Environments at NCSA (National Center for Supercomputer Applications), University of Illinois.