# 2D computer graphics

2D computer graphics is the computer-based generation of digital images—mostly from two-dimensional models (such as 2D geometric models, text, and digital images) and by techniques specific to them.The word may stand for the branch of computer science that comprises such techniques or for the models themselves.

Raster graphic sprites (left) and masks (right)

2D computer graphics are mainly used in applications that were originally developed upon traditional printing and drawing technologies, such as typography, cartography, technical drawing, advertising, etc. In those applications, the two-dimensional image is not just a representation of a real-world object, but an independent artifact with added semantic value; two-dimensional models are therefore preferred, because they give more direct control of the image than 3D computer graphics (whose approach is more akin to photography than to typography).

In many domains, such as desktop publishing, engineering, and business, a description of a document based on 2D computer graphics techniques can be much smaller than the corresponding digital image—often by a factor of 1/1000 or more. This representation is also more flexible since it can be rendered at different resolutions to suit different output devices. For these reasons, documents and illustrations are often stored or transmitted as 2D graphic files.

2D computer graphics started in the 1950s, based on vector graphics devices. These were largely supplanted by raster-based devices in the following decades. The PostScript language and the X Window System protocol were landmark developments in the field.

## 2D graphics techniques

2D graphics models may combine geometric models (also called vector graphics), digital images (also called raster graphics), text to be typeset (defined by content, font style and size, color, position, and orientation), mathematical functions and equations, and more. These components can be modified and manipulated by two-dimensional geometric transformations such as translation, rotation, scaling. In object-oriented graphics, the image is described indirectly by an object endowed with a self-rendering method—a procedure which assigns colors to the image pixels by an arbitrary algorithm. Complex models can be built by combining simpler objects, in the paradigms of object-oriented programming.

A translation moves every point of a figure or a space by the same amount in a given direction.
A reflection against an axis followed by a reflection against a second axis parallel to the first one results in a total motion which is a translation.

In Euclidean geometry, a translation moves every point a constant distance in a specified direction. A translation can be described as a rigid motion: other rigid motions include rotations and reflections. A translation can also be interpreted as the addition of a constant vector to every point, or as shifting the origin of the coordinate system. A translation operator is an operator ${\displaystyle T_{\mathbf {\delta } }}$ such that ${\displaystyle T_{\mathbf {\delta } }f(\mathbf {v} )=f(\mathbf {v} +\mathbf {\delta } ).}$

If v is a fixed vector, then the translation Tv will work as Tv(p) = p + v.

If T is a translation, then the image of a subset A under the function T is the translate of A by T. The translate of A by Tv is often written A + v.

In a Euclidean space, any translation is an isometry. The set of all translations forms the translation group T, which is isomorphic to the space itself, and a normal subgroup of Euclidean group E(n ). The quotient group of E(n ) by T is isomorphic to the orthogonal group O(n ):

E(n ) / TO(n ).

## Translation

Since a translation is an affine transformation but not a linear transformation, homogeneous coordinates are normally used to represent the translation operator by a matrix and thus to make it linear. Thus we write the 3-dimensional vector w = (wx, wy, wz) using 4 homogeneous coordinates as w = (wx, wy, wz, 1).[1]

To translate an object by a vector v, each homogeneous vector p (written in homogeneous coordinates) would need to be multiplied by this translation matrix:

${\displaystyle T_{\mathbf {v} }={\begin{bmatrix}1&0&0&v_{x}\\0&1&0&v_{y}\\0&0&1&v_{z}\\0&0&0&1\end{bmatrix}}}$

As shown below, the multiplication will give the expected result:

${\displaystyle T_{\mathbf {v} }\mathbf {p} ={\begin{bmatrix}1&0&0&v_{x}\\0&1&0&v_{y}\\0&0&1&v_{z}\\0&0&0&1\end{bmatrix}}{\begin{bmatrix}p_{x}\\p_{y}\\p_{z}\\1\end{bmatrix}}={\begin{bmatrix}p_{x}+v_{x}\\p_{y}+v_{y}\\p_{z}+v_{z}\\1\end{bmatrix}}=\mathbf {p} +\mathbf {v} }$

The inverse of a translation matrix can be obtained by reversing the direction of the vector:

${\displaystyle T_{\mathbf {v} }^{-1}=T_{-\mathbf {v} }.\!}$

Similarly, the product of translation matrices is given by adding the vectors:

${\displaystyle T_{\mathbf {u} }T_{\mathbf {v} }=T_{\mathbf {u} +\mathbf {v} }.\!}$

Because addition of vectors is commutative, multiplication of translation matrices is therefore also commutative (unlike multiplication of arbitrary matrices).

## Rotation

In linear algebra, a rotation matrix is a matrix that is used to perform a rotation in Euclidean space.

${\displaystyle R={\begin{bmatrix}\cos \theta &-\sin \theta \\\sin \theta &\cos \theta \\\end{bmatrix}}}$

rotates points in the xy-Cartesian plane counterclockwise through an angle θ about the origin of the Cartesian coordinate system. To perform the rotation using a rotation matrix R, the position of each point must be represented by a column vector v, containing the coordinates of the point. A rotated vector is obtained by using the matrix multiplication Rv. Since matrix multiplication has no effect on the zero vector (i.e., on the coordinates of the origin), rotation matrices can only be used to describe rotations about the origin of the coordinate system.

Rotation matrices provide a simple algebraic description of such rotations, and are used extensively for computations in geometry, physics, and computer graphics. In 2-dimensional space, a rotation can be simply described by an angle θ of rotation, but it can be also represented by the 4 entries of a rotation matrix with 2 rows and 2 columns. In 3-dimensional space, every rotation can be interpreted as a rotation by a given angle about a single fixed axis of rotation (see Euler's rotation theorem), and hence it can be simply described by an angle and a vector with 3 entries. However, it can also be represented by the 9 entries of a rotation matrix with 3 rows and 3 columns. The notion of rotation is not commonly used in dimensions higher than 3; there is a notion of a rotational displacement, which can be represented by a matrix, but no associated single axis or angle.

Rotation matrices are square matrices, with real entries. More specifically they can be characterized as orthogonal matrices with determinant 1:

${\displaystyle R^{T}=R^{-1},\det R=1\,}$.

The set of all such matrices of size n forms a group, known as the special orthogonal group SO(n).

## In two dimensions

A counterclockwise rotation of a vector through angle θ. The vector is initially aligned with the x-axis.

In two dimensions every rotation matrix has the following form:

${\displaystyle R(\theta )={\begin{bmatrix}\cos \theta &-\sin \theta \\\sin \theta &\cos \theta \\\end{bmatrix}}}$.

This rotates column vectors by means of the following matrix multiplication:

${\displaystyle {\begin{bmatrix}x'\\y'\\\end{bmatrix}}={\begin{bmatrix}\cos \theta &-\sin \theta \\\sin \theta &\cos \theta \\\end{bmatrix}}{\begin{bmatrix}x\\y\\\end{bmatrix}}}$.

So the coordinates (x',y') of the point (x,y) after rotation are:

${\displaystyle x'=x\cos \theta -y\sin \theta \,}$,
${\displaystyle y'=x\sin \theta +y\cos \theta \,}$.

The direction of vector rotation is counterclockwise if θ is positive (e.g. 90°), and clockwise if θ is negative (e.g. -90°).

${\displaystyle R(-\theta )={\begin{bmatrix}\cos \theta &\sin \theta \\-\sin \theta &\cos \theta \\\end{bmatrix}}\,}$.

### Non-standard orientation of the coordinate system

A rotation through angle θ with non-standard axes.

If a standard right-handed Cartesian coordinate system is used, with the x axis to the right and the y axis up, the rotation R(θ) is counterclockwise. If a left-handed Cartesian coordinate system is used, with x directed to the right but y directed down, R(θ) is clockwise. Such non-standard orientations are rarely used in mathematics but are common in 2D computer graphics, which often have the origin in the top left corner and the y-axis down the screen or page.[2]

See below for other alternative conventions which may change the sense of the rotation produced by a rotation matrix.

### Common rotations

Particularly useful are the matrices for 90° and 180° rotations:

${\displaystyle R(90^{\circ })={\begin{bmatrix}0&-1\\[3pt]1&0\\\end{bmatrix}}}$ (90° counterclockwise rotation)
${\displaystyle R(180^{\circ })={\begin{bmatrix}-1&0\\[3pt]0&-1\\\end{bmatrix}}}$ (180° rotation in either direction – a half-turn)
${\displaystyle R(270^{\circ })={\begin{bmatrix}0&1\\[3pt]-1&0\\\end{bmatrix}}}$ (270° counterclockwise rotation, the same as a 90° clockwise rotation)

In Euclidean geometry, uniform scaling (isotropic scaling,[3] homogeneous dilation, homothety) is a linear transformation that enlarges (increases) or shrinks (diminishes) objects by a scale factor that is the same in all directions. The result of uniform scaling is similar (in the geometric sense) to the original. A scale factor of 1 is normally allowed, so that congruent shapes are also classed as similar. (Some school text books specifically exclude this possibility, just as some exclude squares from being rectangles or circles from being ellipses.)

More general is scaling with a separate scale factor for each axis direction. Non-uniform scaling (anisotropic scaling, inhomogeneous dilation) is obtained when at least one of the scaling factors is different from the others; a special case is directional scaling or stretching (in one direction). Non-uniform scaling changes the shape of the object; e.g. a square may change into a rectangle, or into a parallelogram if the sides of the square are not parallel to the scaling axes (the angles between lines parallel to the axes are preserved, but not all angles).

## Scaling

A scaling can be represented by a scaling matrix. To scale an object by a vector v = (vx, vy, vz), each point p = (px, py, pz) would need to be multiplied with this scaling matrix:

${\displaystyle S_{v}={\begin{bmatrix}v_{x}&0&0\\0&v_{y}&0\\0&0&v_{z}\\\end{bmatrix}}.}$

As shown below, the multiplication will give the expected result:

${\displaystyle S_{v}p={\begin{bmatrix}v_{x}&0&0\\0&v_{y}&0\\0&0&v_{z}\\\end{bmatrix}}{\begin{bmatrix}p_{x}\\p_{y}\\p_{z}\end{bmatrix}}={\begin{bmatrix}v_{x}p_{x}\\v_{y}p_{y}\\v_{z}p_{z}\end{bmatrix}}.}$

Such a scaling changes the diameter of an object by a factor between the scale factors, the area by a factor between the smallest and the largest product of two scale factors, and the volume by the product of all three.

The scaling is uniform if and only if the scaling factors are equal (vx = vy = vz). If all except one of the scale factors are equal to 1, we have directional scaling.

In the case where vx = vy = vz = k, the scaling is also called an enlargement or dilation by a factor k, increasing the area by a factor of k2 and the volume by a factor of k3.

A scaling in the most general sense is any affine transformation with a diagonalizable matrix. It includes the case that the three directions of scaling are not perpendicular. It includes also the case that one or more scale factors are equal to zero (projection), and the case of one or more negative scale factors. The latter corresponds to a combination of scaling proper and a kind of reflection: along lines in a particular direction we take the reflection in the point of intersection with a plane that need not be perpendicular; therefore it is more general than ordinary reflection in the plane.

## Using homogeneous coordinates

In projective geometry, often used in computer graphics, points are represented using homogeneous coordinates. To scale an object by a vector v = (vx, vy, vz), each homogeneous coordinate vector p = (px, py, pz, 1) would need to be multiplied with this projective transformation matrix:

${\displaystyle S_{v}={\begin{bmatrix}v_{x}&0&0&0\\0&v_{y}&0&0\\0&0&v_{z}&0\\0&0&0&1\end{bmatrix}}.}$

As shown below, the multiplication will give the expected result:

${\displaystyle S_{v}p={\begin{bmatrix}v_{x}&0&0&0\\0&v_{y}&0&0\\0&0&v_{z}&0\\0&0&0&1\end{bmatrix}}{\begin{bmatrix}p_{x}\\p_{y}\\p_{z}\\1\end{bmatrix}}={\begin{bmatrix}v_{x}p_{x}\\v_{y}p_{y}\\v_{z}p_{z}\\1\end{bmatrix}}.}$

Since the last component of a homogeneous coordinate can be viewed as the denominator of the other three components, a uniform scaling by a common factor s (uniform scaling) can be accomplished by using this scaling matrix:

${\displaystyle S_{v}={\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&{\frac {1}{s}}\end{bmatrix}}.}$

For each vector p = (px, py, pz, 1) we would have

${\displaystyle S_{v}p={\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&{\frac {1}{s}}\end{bmatrix}}{\begin{bmatrix}p_{x}\\p_{y}\\p_{z}\\1\end{bmatrix}}={\begin{bmatrix}p_{x}\\p_{y}\\p_{z}\\{\frac {1}{s}}\end{bmatrix}}}$

which would be homogenized to

${\displaystyle {\begin{bmatrix}sp_{x}\\sp_{y}\\sp_{z}\\1\end{bmatrix}}.}$

### Direct painting

A convenient way to create a complex image is to start with a blank "canvas" raster map (an array of pixels, also known as a bitmap) filled with some uniform background color and then "draw", "paint" or "paste" simple patches of color onto it, in an appropriate order. In particular the canvas may be the frame buffer for a computer display.

Some programs will set the pixel colors directly, but most will rely on some 2D graphics library or the machine's graphics card, which usually implement the following operations:

• paste a given image at a specified offset onto the canvas;
• write a string of characters with a specified font, at a given position and angle;
• paint a simple geometric shape, such as a triangle defined by three corners, or a circle with given center and radius;
• draw a line segment, arc, or simple curve with a virtual pen of given width.

### Extended color models

Text, shapes and lines are rendered with a client-specified color. Many libraries and cards provide color gradients, which are handy for the generation of smoothly-varying backgrounds, shadow effects, etc. (See also Gouraud shading). The pixel colors can also be taken from a texture, e.g. a digital image (thus emulating rub-on screentones and the fabled checker paint which used to be available only in cartoons).

Painting a pixel with a given color usually replaces its previous color. However, many systems support painting with transparent and translucent colors, which only modify the previous pixel values. The two colors may also be combined in more complex ways, e.g. by computing their bitwise exclusive or. This technique is known as inverting color or color inversion, and is often used in graphical user interfaces for highlighting, rubber-band drawing, and other volatile painting—since re-painting the same shapes with the same color will restore the original pixel values.

### Layers

A 2D animated character composited with 3D backgrounds using layers.

The models used in 2D computer graphics usually do not provide for three-dimensional shapes, or three-dimensional optical phenomena such as lighting, shadows, reflection, refraction, etc. However, they usually can model multiple layers (conceptually of ink, paper, or film; opaque, translucent, or transparent—stacked in a specific order. The ordering is usually defined by a single number (the layer's depth, or distance from the viewer).

Layered models are sometimes called 2½-D computer graphics. They make it possible to mimic traditional drafting and printing techniques based on film and paper, such as cutting and pasting; and allow the user to edit any layer without affecting the others. For these reasons, they are used in most graphics editors. Layered models also allow better spatial anti-aliasing of complex drawings and provide a sound model for certain techniques such as mitered joints and the even-odd rule.

Layered models are also used to allow the user to suppress unwanted information when viewing or printing a document, e.g. roads or railways from a map, certain process layers from an integrated circuit diagram, or hand annotations from a business letter.

In a layer-based model, the target image is produced by "painting" or "pasting" each layer, in order of decreasing depth, on the virtual canvas. Conceptually, each layer is first rendered on its own, yielding a digital image with the desired resolution which is then painted over the canvas, pixel by pixel. Fully transparent parts of a layer need not be rendered, of course. The rendering and painting may be done in parallel, i.e., each layer pixel may be painted on the canvas as soon as it is produced by the rendering procedure.

Layers that consist of complex geometric objects (such as text or polylines) may be broken down into simpler elements (characters or line segments, respectively), which are then painted as separate layers, in some order. However, this solution may create undesirable aliasing artifacts wherever two elements overlap the same pixel.

## 2D graphics hardware

Modern computer graphics card displays almost overwhelmingly use raster techniques, dividing the screen into a rectangular grid of pixels, due to the relatively low cost of raster-based video hardware as compared with vector graphic hardware. Most graphic hardware has internal support for blitting operations or sprite drawing. A co-processor dedicated to blitting is known as a Blitter chip.

Classic 2D graphics chips and graphics processing units of the late 1970s to 1980s, used in 8-bit to early 16-bit, arcade games, video game consoles, and home computers, include:

## 2D graphics software

Many graphical user interfaces (GUIs), including macOS, Microsoft Windows, or the X Window System, are primarily based on 2D graphical concepts. Such software provides a visual environment for interacting with the computer, and commonly includes some form of window manager to aid the user in conceptually distinguishing between different applications. The user interface within individual software applications is typically 2D in nature as well, due in part to the fact that most common input devices, such as the mouse, are constrained to two dimensions of movement.

2D graphics are very important in the control peripherals such as printers, plotters, sheet cutting machines, etc. They were also used in most early video games; and are still used for card and board games such as solitaire, chess, mahjongg, etc.

2D graphics editors or drawing programs are application-level software for the creation of images, diagrams and illustrations by direct manipulation (through the mouse, graphics tablet, or similar device) of 2D computer graphics primitives. These editors generally provide geometric primitives as well as digital images; and some even support procedural models. The illustration is usually represented internally as a layered model, often with a hierarchical structure to make editing more convenient. These editors generally output graphics files where the layers and primitives are separately preserved in their original form. MacDraw, introduced in 1984 with the Macintosh line of computers, was an early example of this class; recent examples are the commercial products Adobe Illustrator and CorelDRAW, and the free editors such as xfig or Inkscape. There are also many 2D graphics editors specialized for certain types of drawings such as electrical, electronic and VLSI diagrams, topographic maps, computer fonts, etc.

Image editors are specialized for the manipulation of digital images, mainly by means of free-hand drawing/painting and signal processing operations. They typically use a direct-painting paradigm, where the user controls virtual pens, brushes, and other free-hand artistic instruments to apply paint to a virtual canvas. Some image editors support a multiple-layer model; however, in order to support signal-processing operations like blurring each layer is normally represented as a digital image. Therefore, any geometric primitives that are provided by the editor are immediately converted to pixels and painted onto the canvas. The name raster graphics editor is sometimes used to contrast this approach to that of general editors which also handle vector graphics. One of the first popular image editors was Apple's MacPaint, companion to MacDraw. Modern examples are the free GIMP editor, and the commercial products Photoshop and Paint Shop Pro. This class too includes many specialized editors — for medicine, remote sensing, digital photography, etc.

## Developmental animation

With the resurgence[4]:8 of 2D animation, free and proprietary software packages have become widely available for amateurs and professional animators. The principal issue with 2D animation is labor requirements. With software like RETAS UbiArt Framework and Adobe After Effects, coloring and compositing can be done in less time.

Various approaches have been developed[4]:38 to aid and speed up the process of digital 2D animation. For example, by generating vector artwork in a tool like Adobe Flash an artist may employ software-driven automatic coloring and in-betweening.

## References

1. ^ Richard Paul, 1981, Robot manipulators: mathematics, programming, and control : the computer control of robot manipulators, MIT Press, Cambridge, MA
2. ^ W3C recommendation (2003), Scalable Vector Graphics -- the initial coordinate system
3. ^ Durand; Cutler. "Transformations" (PowerPoint). Massachusetts Institute of Technology. Retrieved 12 September 2008.
4. ^ a b Pile Jr, John (May 2013). 2D Graphics Programming for Games. New York, NY: CRC Press. ISBN 1466501898.
2D

2D or 2-D may refer to:

Two-dimensional space

2D geometric model

2D computer graphics

2-D (character), legs of the virtual band Gorillaz

Index finger, the second digit (abbreviated 2D) of the hand

Oflag II-D

Stalag II-D

Transcription factor II D

Two Dickinson Street Co-op, a student dining cooperative at Princeton University

Two dimensional correlation analysis

Nintendo 2DS

2degrees, New Zealand telecommunications provider

Twopence (British pre-decimal coin), routinely abbreviated 2d.

2D geometric model

A 2D geometric model is a geometric model of an object as a two-dimensional figure, usually on the Euclidean or Cartesian plane.

Even though all material objects are three-dimensional, a 2D geometric model is often adequate for certain flat objects, such as paper cut-outs and machine parts made of sheet metal.

2D geometric models are also convenient for describing certain types of artificial images, such as technical diagrams, logos, the glyphs of a font, etc. They are an essential tool of 2D computer graphics and often used as components of 3D geometric models, e.g. to describe the decals to be applied to a car model. Modern architecture practice "digital rendering" which is a technique used to form a perception of a 2-D geometric model as of a 3-D geometric model designed through descriptive geometry and computerized equipment.

3D computer graphics

3D computer graphics or three-dimensional computer graphics (in contrast to 2D computer graphics), are graphics that use a three-dimensional representation of geometric data (often Cartesian) that is stored in the computer for the purposes of performing calculations and rendering 2D images. Such images may be stored for viewing later or displayed in real-time.

3D computer graphics rely on many of the same algorithms as 2D computer vector graphics in the wire-frame model and 2D computer raster graphics in the final rendered display. In computer graphics software, 2D applications may use 3D techniques to achieve effects such as lighting, and 3D may use 2D rendering techniques.

3D computer graphics are often referred to as 3D models. Apart from the rendered graphic, the model is contained within the graphical data file. However, there are differences: a 3D model is the mathematical representation of any three-dimensional object. A model is not technically a graphic until it is displayed. A model can be displayed visually as a two-dimensional image through a process called 3D rendering or used in non-graphical computer simulations and calculations. With 3D printing, 3D models are similarly rendered into a 3D physical representation of the model, with limitations to how accurate the rendering can match the virtual model.

Computer animation

Computer animation is the process used for generating animated images. The more general term computer-generated imagery (CGI) encompasses both static scenes and dynamic images, while computer animation only refers to the moving images. Modern computer animation usually uses 3D computer graphics, although 2D computer graphics are still used for stylistic, low bandwidth, and faster real-time renderings. Sometimes, the target of the animation is the computer itself, but sometimes film as well.

Computer animation is essentially a digital successor to the stop motion techniques using 3D models, and traditional animation techniques using frame-by-frame animation of 2D illustrations. Computer-generated animations are more controllable than other more physically based processes, constructing miniatures for effects shots or hiring extras for crowd scenes, and because it allows the creation of images that would not be feasible using any other technology. It can also allow a single graphic artist to produce such content without the use of actors, expensive set pieces, or props. To create the illusion of movement, an image is displayed on the computer monitor and repeatedly replaced by a new image that is similar to it, but advanced slightly in time (usually at a rate of 24, 25 or 30 frames/second). This technique is identical to how the illusion of movement is achieved with television and motion pictures.

For 3D animations, objects (models) are built on the computer monitor (modeled) and 3D figures are rigged with a virtual skeleton. For 2D figure animations, separate objects (illustrations) and separate transparent layers are used with or without that virtual skeleton. Then the limbs, eyes, mouth, clothes, etc. of the figure are moved by the animator on key frames. The differences in appearance between key frames are automatically calculated by the computer in a process known as tweening or morphing. Finally, the animation is rendered.For 3D animations, all frames must be rendered after the modeling is complete. For 2D vector animations, the rendering process is the key frame illustration process, while tweened frames are rendered as needed. For pre-recorded presentations, the rendered frames are transferred to a different format or medium, like digital video. The frames may also be rendered in real time as they are presented to the end-user audience. Low bandwidth animations transmitted via the internet (e.g. Adobe Flash, X3D) often use software on the end-users computer to render in real time as an alternative to streaming or pre-loaded high bandwidth animations.

Computer graphics

Computer graphics are pictures and films created using computers. Usually, the term refers to computer-generated image data created with the help of specialized graphical hardware and software. It is a vast and recently developed area of computer science. The phrase was coined in 1960, by computer graphics researchers Verne Hudson and William Fetter of Boeing. It is often abbreviated as CG, though sometimes erroneously referred to as computer-generated imagery (CGI).

Some topics in computer graphics include user interface design, sprite graphics, vector graphics, 3D modeling, shaders, GPU design, implicit surface visualization with ray tracing, and computer vision, among others. The overall methodology depends heavily on the underlying sciences of geometry, optics, and physics.

Computer graphics is responsible for displaying art and image data effectively and meaningfully to the consumer. It is also used for processing image data received from the physical world. Computer graphics development has had a significant impact on many types of media and has revolutionized animation, movies, advertising, video games, and graphic design in general.

Computer graphics (disambiguation)

Computer graphics are graphics created by computers and, more generally, the representation and manipulation of pictorial data by a computer.

Computer graphics may also refer to:

2D computer graphics, the application of computer graphics to generating 2D imagery

3D computer graphics, the application of computer graphics to generating 3D imagery

Computer animation, the art of creating moving images via the use of computers

Computer-generated imagery, the application of the field of computer graphics to special effects in films, television programs, commercials, simulators and simulation generally, and printed media

Computer graphics (computer science), a subfield of computer science studying mathematical and computational representations of visual objects

Computer Graphics (publication), the journal by ACM SIGGRAPH

Computer Graphics: Principles and Practice, the classic textbook by James D. Foley, Andries van Dam, Steven K. Feiner and John Hughes

Enigma (video game)

Enigma is a puzzle video game based on Oxyd, and is released under the GPL. Enigma continues to be very popular as an open source multi-platform derivative of Oxyd now that Oxyd is no longer maintained. The open source fangame Enigma has been praised in reviews.Enigma is a marble game. Landscapes usually take the form of logic puzzles, although frequently, dexterity with the pointing device (the only form of input) is also required. The game is based on a traditional square grid map (2D computer graphics) and a realistic physics simulation.

Enigma is cross-platform and available for Mac OS X, GP2X, Microsoft Windows, FreeBSD and Linux (with packages available for several distributions).

Geometric primitive

The term geometric primitive, or prim, in computer graphics and CAD systems is used in various senses, with the common meaning of the simplest (i.e. 'atomic' or irreducible) geometric objects that the system can handle (draw, store). Sometimes the subroutines that draw the corresponding objects are called "geometric primitives" as well. The most "primitive" primitives are point and straight line segment, which were all that early vector graphics systems had.

In constructive solid geometry, primitives are simple geometric shapes such as a cube, cylinder, sphere, cone, pyramid, torus.

Modern 2D computer graphics systems may operate with primitives which are lines (segments of straight lines, circles and more complicated curves), as well as shapes (boxes, arbitrary polygons, circles).

A common set of two-dimensional primitives includes lines, points, and polygons, although some people prefer to consider triangles primitives, because every polygon can be constructed from triangles. All other graphic elements are built up from these primitives. In three dimensions, triangles or polygons positioned in three-dimensional space can be used as primitives to model more complex 3D forms. In some cases, curves (such as Bézier curves, circles, etc.) may be considered primitives; in other cases, curves are complex forms created from many straight, primitive shapes.

Ghost Online

Ghost Online also known as Ghost Soul and GO was a free fast paced action-based sidescrolling, massively multiplayer online game that is currently released in South Korea, Japanese, Chinese, Thailand and Malaysian-English.

On July 8, the Global version went into Open Beta, but was closed down on June 3, 2009. Created by Netgame, which is a division of MGame USA Inc.(Taiwan and China 搞鬼 is a free, 2D computer graphics, side-scrolling MMORPG developed by the Korean company MGame. Several versions of the game are available for specific countries or regions, and each is published by various companies such as GameFlier, Gemscool and OurGame. Although playing the game is free, many player appearances and gameplay enhancements can be purchased from the GhostShop using real currency.

In the game, players defend the "World" from ghost monsters and develop their character's skills and abilities, as in typical role-playing games. There is a soul system that allows players absorb souls from monsters. Players can interact with others in many ways, such as through chatting, trading. Groups of players can band together in parties to hunt monsters, and share the rewards. Players can fight each other with the game PvP system. Players can also band in a guild to battle with other guilds. Ghost Online also many quests, some of which allow the player to obtain new skills.

Heroes of Might and Magic V

Heroes of Might and Magic V is the fifth installment of the Heroes of Might and Magic fantasy turn-based strategy video game series. The game was released by Ubisoft in Europe on May 16, and then in the United States and Canada on May 24, 2006, with the publisher guiding Russian studio Nival Interactive in its development. Following the closure of The 3DO Company, Ubisoft bought the rights to the Might and Magic franchise, and used Heroes V as a means to reboot the series with a brand new setting, called Ashan, and no continuity to previous titles.

Like the other games in the series, players take control of "heroes" (leaders with magical abilities) who provide their services for a faction, recruiting an army from settlement strongholds, such as castles, out of various forces (humanoid, undead, monsters, and so forth) and then doing battle against roaming armies, enemy heroes and rival factions. The game features a campaign series that covers six factions from Ashan, along with stand-alone and multiplayer scenarios. Unlike the preceding games in the series, which used 2D computer graphics but with some isometric touches, Heroes V was the first to be completely 3D.

JChemPaint

JChemPaint is computer software, a molecule editor and file viewer for chemical structures using 2D computer graphics.

It is free and open-source software, released under a GNU Lesser General Public License (LGPL). It is written in Java and so can run on the operating systems Windows, macOS, Linux, and Unix. There is a standalone application (editor), and two varieties of applet (editor and viewer) that can be integrated into web pages.

JChemPaint was initiated by Christoph Steinbeck and is currently being developed as part of The Chemistry Development Kit (CDK), and a Standard Widget Toolkit (SWT) based JChemPaint application is being developed, as part of Bioclipse.

Lazer's Interactive Symbolic Assembler

Lazer's Interactive Symbolic Assembler (Lisa) is an interactive MOS 6502 assembler for Apple II computers written by Randall Hyde in the late 1970s.

The latest version of Lisa is V3.2. Lisa includes an integrated editor with syntax checking. Lisa can assemble up to 30,000 lines of code in a minute on a 1 MHz computer, a speed achieved due to the editor's pre-parsing of the source code.

Lisa, before v.3, was able to assemble SWEET16 codes, a virtual 16-bit processor implemented as part of the Integer BASIC. However, the Apple II's Integer BASIC ROMs were replaced by Applesoft BASIC ROMs since the Apple II+, and the latter didn't contain the SWEET16 interpreter code.

The assembler also features "Randy's Hi-res Routines", a set of 2D computer graphics commands. Apple II's hi-res display pages (Hi-Res 1: 280 × 160 and Hi-Res 2: 280 × 192) were implemented by Steve Wozniak using two TTL chips. Therefore a software programmer has to deal with the discontinuous addressing of screen pixels (a full screen is split into three parts horizontally) and each pixel's coloring properties (each pixel uses 1-bit, its color is determined by that bit's place in a byte and its neighboring pixel). These ready-made subroutines were created to help programmers.

Lisa has a built-in disassembler.

List of computer graphics and descriptive geometry topics

This is a list of computer graphics and descriptive geometry topics, by article name.

2D computer graphics

2D geometric model

3D computer graphics

3D projection

Alpha compositing

Anisotropic filtering

Anti-aliasing

Axis-aligned bounding box

Axonometric projection

Bézier curve

Bézier surface

Bicubic interpolation

Bilinear interpolation

Binary space partitioning

Bitmap graphics editor

Bounding volume

Bresenham's line algorithm

Bump mapping

Collision detection

Color space

Colour banding

Computational geometry

Computer animation

Computer-generated art

Computer painting

Convex hull

Curvilinear perspective

Cylindrical perspective

Data compression

Digital raster graphic

Dimetric projection

Distance fog

Dithering

Elevation

Engineering drawing

Flood fill

Geometric model

Geometric primitive

Global illumination

Graphical projection

Graphics suite

Heightfield

Hidden face removal

Hidden line removal

High dynamic range rendering

Isometric projection

Lathe (graphics)

Line drawing algorithm

Linear perspective

Mesh generation

Motion blur

Orthographic projection

Orthographic projection (geometry)

Orthogonal projection

Perspective (graphical)

Phong reflection model

Polygon (computer graphics)

Procedural surface

Projection

Projective geometry

Raster graphics

Raytracing

Rendering (computer graphics)

Reverse perspective

Scan line rendering

Scrolling

Technical drawing

Texture mapping

Trimetric projection

Vanishing point

Vector graphics

Vector graphics editor

Volume rendering

Voxel

Molecule editor

A molecule editor is a computer program for creating and modifying representations of chemical structures.

Molecule editors can manipulate chemical structure representations in either a simulated two-dimensional space or three-dimensional space, via 2D computer graphics or 3D computer graphics, respectively. Two-dimensional output is used as illustrations or to query chemical databases. Three-dimensional output is used to build molecular models, usually as part of molecular modelling software packages.

Database molecular editors such as Leatherface, RECAP, and Molecule Slicer allow large numbers of molecules to be modified automatically according to rules such as 'deprotonate carboxylic acids' or 'break exocyclic bonds' that can be specified by a user.

Molecule editors typically support reading and writing at least one file format or line notation. Examples of each include Molfile and simplified molecular input line entry specification (SMILES), respectively.

Files generated by molecule editors can be displayed by molecular graphics tools.

Onion skinning

Onion skinning is a 2D computer graphics term for a technique used in creating animated cartoons and editing movies to see several frames at once. This way, the animator or editor can make decisions on how to create or change an image based on the previous image in the sequence.

In traditional cartoon animation, the individual frames of a movie were initially drawn on thin onionskin paper over a light source. The animators (mostly inbetweeners) would put the previous and next drawings exactly beneath the working drawing, so that they could draw the 'in between' to give a smooth motion.

In computer software, this effect is achieved by making frames translucent and projecting them on top of each other.

This effect can also be used to create motion blurs, as seen in The Matrix when characters dodge bullets.

Parallax scrolling

Parallax scrolling is a technique in computer graphics where background images move past the camera more slowly than foreground images, creating an illusion of depth in a 2D scene and adding to the sense of immersion in the virtual experience. The technique grew out of the multiplane camera technique used in traditional animation since the 1930s. Parallax scrolling was popularized in 2D computer graphics and video games by the arcade games Moon Patrol and Jungle Hunt, both released in 1982. Some parallax scrolling had earlier been used by the 1981 arcade game Jump Bug.

Parallel curve

A parallel of a curve is the

envelope of a family of congruent circles centered on the curve.It generalises the concept of parallel lines. It can also be defined as a

curve whose points are at a fixed normal distance from a given curve.These two definitions are not entirely equivalent as the latter assumes smoothness, whereas the former does not.In Computer-aided design the preferred term for a parallel curve is offset curve (In other geometric contexts, the term offset can also refer to translation.) Offset curves are important for example in numerically controlled machining, where they describe for example the shape of the cut made by a round cutting tool of a two-axis machine. The shape of the cut is offset from the trajectory of the cutter by a constant distance in the direction normal to the cutter trajectory at every point.In the area of 2D computer graphics known as vector graphics, the (approximate) computation of parallel curves is involved in one of the fundamental drawing operations, called stroking, which is typically applied to polylines or polybeziers (themselves called paths) in that field.Except in the case of a line or circle, the parallel curves have a more complicated mathematical structure than the progenitor curve. For example, even if the progenitor curve is smooth, its offsets may not be so; this property is illustrated in the adjacent figure using a parabola as progenitor curve. In general, even if a curve is rational, its offsets may not be so. For example, the offsets of a parabola are rational curves, but the offsets of an ellipse or of a hyperbola are not rational, even though these progenitor curves themselves are rational.The notion also generalizes to 3D surfaces, where it is called offset surface. Increasing a solid volume by a (constant) distance offset is sometimes called dilation. The opposite operation is sometimes called shelling.

Simple and Fast Multimedia Library

Simple and Fast Multimedia Library (SFML) is a cross-platform software development library designed to provide a simple application programming interface (API) to various multimedia components in computers. It is written in C++ with

bindings available for C, Crystal, D, Euphoria, Go, Java, Julia, .NET, Nim, OCaml, Python, Ruby, and Rust. Experimental mobile ports were made available for Android and iOS with the release of SFML 2.2.SFML handles creating and input to windows, and creating and managing OpenGL contexts. It also provides a graphics module for simple hardware acceleration of 2D computer graphics which includes text rendering using FreeType, an audio module that uses OpenAL and a networking module for basic Transmission Control Protocol (TCP) and User Datagram Protocol (UDP) communication.

SFML is free and open-source software provided under the terms of the zlib/png license. It is available on Linux, macOS, Windows and FreeBSD. The first version v1.0 was released on 9 August 2007, the latest version v2.5.1 was released on 15 Oct 2018.

Transformation matrix

In linear algebra, linear transformations can be represented by matrices. If ${\displaystyle T}$ is a linear transformation mapping ${\displaystyle \mathbb {R} ^{n}}$ to ${\displaystyle \mathbb {R} ^{m}}$ and ${\displaystyle {\vec {x}}}$ is a column vector with ${\displaystyle n}$ entries, then

${\displaystyle T({\vec {x}})=\mathbf {A} {\vec {x}}}$

for some ${\displaystyle m\times n}$ matrix ${\displaystyle A}$, called the transformation matrix of ${\displaystyle T}$. Note that ${\displaystyle A}$ has ${\displaystyle m}$ rows and ${\displaystyle n}$ columns, whereas the transformation ${\displaystyle T}$ is from ${\displaystyle \mathbb {R} ^{n}}$ to ${\displaystyle \mathbb {R} ^{m}}$. There are alternative expressions of transformation matrices involving row vectors that are preferred by some authors.

This page is based on a Wikipedia article written by authors (here).
Text is available under the CC BY-SA 3.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.