Você está na página 1de 50

Autodesk Maya

Autodesk Maya ( /mj/), commonly shortened to Maya, is 3D computer graphics software that runs on Microsoft Windows, Mac OS and Linux, originally developed by Alias Systems Corporation (formerly Alias|Wavefront) and currently owned and developed by Autodesk, Inc. It is used to create interactive 3D applications, including video games, animated film, TV series, or visual effects. The product is named after the Sanskrit word Maya ( my), the Hindu concept of illusion.[3]

History
Development
Maya was originally a next-generation animation product under development at Alias Research, Inc. based on code from The Advanced Visualizer, PowerAnimator and Alias Sketch!. The code was ported to IRIX and animation features were added. The codename for this porting project was Maya.[4] Walt Disney Feature Animation collaborated closely with Maya's development during its production of Dinosaur.[5] Disney requested that the User interface of the application be customizable so that a personalized workflow could be created. This was a particular influence in the open architecture of Maya, and partly responsible for it becoming so popular in the industry. After Silicon Graphics Inc. acquired both Alias and Wavefront Technologies, Inc., Wavefront's next-generation technology (then under development) was merged into Maya. SGI's acquisition was a response to Microsoft Corporation acquiring Softimage, Co.. The new wholly owned subsidiary was named "Alias|Wavefront".[6] In the early days of development, Maya started with Tcl as the scripting language, in order to leverage its similarity to a Unix shell language. But after the merger with Wavefront Sophia, the scripting language in Wavefront's Dynamation, was chosen as the basis of MEL (Maya embedded language).[7] Maya 1.0 was released in February 1998. Following a series of acquisitions, Maya was bought by Autodesk in 2005.[8][9] Under the name of the new parent company, Maya was renamed Autodesk Maya. However, the name "Maya" continues to be the dominant name used for the product.

Overview
Maya is an application used to generate 3D assets for use in film, television, game development and architecture. The software was initially released for the IRIX operating system. However, this support was discontinued in August 2006 after the release of version 6.5. Maya was available in both "Complete" and "Unlimited" editions until August 2008, when it was turned into a single suite.[13] Users define a virtual workspace (scene) to implement and edit media of a particular project. Scenes can be saved in a variety of formats, the default being .mb (Maya Binary). Maya exposes a node graph architecture. Scene elements are node-based, each node having its own attributes

and customization. As a result, the visual representation of a scene is based entirely on a network of interconnecting nodes, depending on each others information. For the convenience of viewing these networks, there is a dependency and a directed acyclic graph.

Components
Since its consolidation from two distinct packages, Maya and later contain all the features of the now defunct Unlimited suites. Fluid Effects A realistic fluid simulator (effective for smoke, fire, clouds and explosions, added in Maya 4.5) Classic Cloth Cloth simulation to automatically simulate clothing and fabrics moving realistically over an animated character. The Maya Cloth toolset has been upgraded in every version of Maya released after Spider-Man 2. Alias worked with Sony Pictures Imageworks to get Maya Cloth up to scratch for that production, and all those changes have been implemented, although the big studios opted to use third party plugins such as Syflex instead of the (relatively) cumbersome Maya Cloth. Fur Animal fur simulation similar to Maya Hair. It can be used to simulate other fur-like objects, such as grass. Hair A simulator for realistic-looking human hair implemented using curves and Paint Effects. These are also known as dynamic curves. Maya Live A set of motion tracking tools for CG matching to clean plate footage. nCloth Added in version 8.5, nCloth is the first implementation of Maya Nucleus, Autodesk's simulation framework. nCloth gives the artist further control of cloth and material simulations. nParticle Added in version 2009, nParticle is addendum to Maya Nucleus toolset. nParticle is for simulating a wide range of complex 3D effects, including liquids, clouds, smoke, spray, and dust. MatchMover Added to Maya 2010, this enables compositing of CGI elements with motion data from video and film sequences. Composite Added to Maya 2010, this was earlier sold as Autodesk Toxik. Camera Sequencer Added in Autodesk Maya 2011, Camera Sequencer is used to layout multiple camera shots and manage them in one animation sequence.

Maya Embedded Language


Alongside its more recognized visual workflow, Maya is equipped with a cross-platform scripting language, called Maya Embedded Language. MEL, is provided for scripting and a means to customize the core functionality of the software, since many of the tools and commands used are written in it. Code can be used to engineer modifications, plug-ins or be

injected into runtime. Outside these superficial uses of the language, user interaction is recorded in MEL, allowing even inexperienced users to implement subroutines. Scene information can thus be dumped, extension .ma, editable outside Maya in any text editor.

Non-uniform rational B-spline


Non-uniform rational basis spline (NURBS) is a mathematical model commonly used in computer graphics for generating and representing curves and surfaces which offers great flexibility and precision for handling both analytic (surfaces defined by common mathematical formulae) and modeled shapes.

History
Development of NURBS began in the 1950s by engineers who were in need of a mathematically precise representation of freeform surfaces like those used for ship hulls, aerospace exterior surfaces, and car bodies, which could be exactly reproduced whenever technically needed. Prior representations of this kind of surface only existed as a single physical model created by a designer. The pioneers of this development were Pierre Bzier who worked as an engineer at Renault, and Paul de Casteljau who worked at Citron, both in France. Bzier worked nearly parallel to de Casteljau, neither knowing about the work of the other. But because Bzier published the results of his work, the average computer graphics user today recognizes splines which are represented with control points lying off the curve itself as Bzier splines, while de Casteljaus name is only known and used for the algorithms he developed to evaluate parametric surfaces. In the 1960s it became clear that non-uniform, rational B-splines are a generalization of Bzier splines, which can be regarded as uniform, non-rational B-splines. At first NURBS were only used in the proprietary CAD packages of car companies. Later they became part of standard computer graphics packages. Real-time, interactive rendering of NURBS curves and surfaces was first made available on Silicon Graphics workstations in 1989. In 1993, the first interactive NURBS modeller for PCs, called NRBS, was developed by CAS Berlin, a small startup company cooperating with the Technical University of Berlin. Today most professional computer graphics applications available for desktop use offer NURBS technology, which is most often realized by integrating a NURBS engine from a specialized company.

Use

Motoryacht design. NURBS are commonly used in computer-aided design (CAD), manufacturing (CAM), and engineering (CAE) and are part of numerous industry wide used standards, such as IGES,

STEP, ACIS, and PHIGS. NURBS tools are also found in various 3D modelling and animation software packages. They allow representation of geometrical shapes in a compact form. They can be efficiently handled by the computer programs and yet allow for easy human interaction. NURBS surfaces are functions of two parameters mapping to a surface in three-dimensional space. The shape of the surface is determined by control points. In general, editing NURBS curves and surfaces is highly intuitive and predictable. Control points are always either connected directly to the curve/surface, or act as if they were connected by a rubber band. Depending on the type of user interface, editing can be realized via an elements control points, which are most obvious and common for Bzier curves, or via higher level tools such as spline modeling or hierarchical editing. A surface under construction, e.g. the hull of a motor yacht, is usually composed of several NURBS surfaces known as patches. These patches should be fitted together in such a way that the boundaries are invisible. This is mathematically expressed by the concept of geometric continuity. Higher-level tools exist which benefit from the ability of NURBS to create and establish geometric continuity of different levels: Positional continuity (G0) holds whenever the end positions of two curves or surfaces are coincidental. The curves or surfaces may still meet at an angle, giving rise to a sharp corner or edge and causing broken highlights. Tangential continuity (G1) requires the end vectors of the curves or surfaces to be parallel, ruling out sharp edges. Because highlights falling on a tangentially continuous edge are always continuous and thus look natural, this level of continuity can often be sufficient. Curvature continuity (G2) further requires the end vectors to be of the same length and rate of length change. Highlights falling on a curvature-continuous edge do not display any change, causing the two surfaces to appear as one. This can be visually recognized as perfectly smooth. This level of continuity is very useful in the creation of models that require many bi-cubic patches composing one continuous surface. Geometric continuity mainly refers to the shape of the resulting surface; since NURBS surfaces are functions, it is also possible to discuss the derivatives of the surface with respect to the parameters. This is known as parametric continuity. Parametric continuity of a given degree implies geometric continuity of that degree. First- and second-level parametric continuity (C0 and C1) are for practical purposes identical to positional and tangential (G0 and G1) continuity. Third-level parametric continuity (C2), however, differs from curvature continuity in that its parameterization is also continuous. In practice, C2 continuity is easier to achieve if uniform B-splines are used. The definition of the continuity 'Cn' requires that the nth derivative of the curve/surface ( ) are equal at a joint.[1] Note that the (partial) derivatives of curves and surfaces are vectors that have a direction and a magnitude. Both should be equal.

Highlights and reflections can reveal the perfect smoothing, which is otherwise practically impossible to achieve without NURBS surfaces that have at least G2 continuity. This same principle is used as one of the surface evaluation methods whereby a ray-traced or reflectionmapped image of a surface with white stripes reflecting on it will show even the smallest deviations on a surface or set of surfaces. This method is derived from car prototyping wherein surface quality is inspected by checking the quality of reflections of a neon-light ceiling on the car surface. This method is also known as "Zebra analysis".

Technical specifications
A NURBS curve is defined by its order, a set of weighted control points, and a knot vector. NURBS curves and surfaces are generalizations of both B-splines and Bzier curves and surfaces, the primary difference being the weighting of the control points which makes NURBS curves rational (non-rational B-splines are a special case of rational B-splines). Whereas Bzier curves evolve into only one parametric direction, usually called s or u, NURBS surfaces evolve into two parametric directions, called s and t or u and v.

By evaluating a Bzier or a NURBS curve at various values of the parameter, the curve can be represented in Cartesian two- or three-dimensional space. Likewise, by evaluating a NURBS surface at various values of the two parameters, the surface can be represented in Cartesian space. NURBS curves and surfaces are useful for a number of reasons:

They are invariant under affine[2] as well as perspective[3] transformations: operations like rotations and translations can be applied to NURBS curves and surfaces by applying them to their control points. They offer one common mathematical form for both standard analytical shapes (e.g., conics) and free-form shapes. They provide the flexibility to design a large variety of shapes. They reduce the memory consumption when storing shapes (compared to simpler methods). They can be evaluated reasonably quickly by numerically stable and accurate algorithms.

In the next sections, NURBS is discussed in one dimension (curves). It should be noted that all of it can be generalized to two or even more dimensions.

Control points
The control points determine the shape of the curve. Typically, each point of the curve is computed by taking a weighted sum of a number of control points. The weight of each point varies according to the governing parameter. For a curve of degree d, the weight of any control point is only nonzero in d+1 intervals of the parameter space. Within those intervals, the weight changes according to a polynomial function (basis functions) of degree d. At the boundaries of the intervals, the basis functions go smoothly to zero, the smoothness being determined by the degree of the polynomial. As an example, the basis function of degree one is a triangle function. It rises from zero to one, then falls to zero again. While it rises, the basis function of the previous control point falls. In that way, the curve interpolates between the two points, and the resulting curve is a polygon, which is continuous, but not differentiable at the interval boundaries, or knots. Higher degree polynomials have correspondingly more continuous derivatives. Note that within the interval the polynomial nature of the basis functions and the linearity of the construction make the curve perfectly smooth, so it is only at the knots that discontinuity can arise. The fact that a single control point only influences those intervals where it is active is a highly desirable property, known as local support. In modeling, it allows the changing of one part of a surface while keeping other parts equal. Adding more control points allows better approximation to a given curve, although only a certain class of curves can be represented exactly with a finite number of control points. NURBS curves also feature a scalar weight for each control point. This allows for more control over the shape of the curve without unduly raising the number of control points. In particular, it adds conic sections like circles and ellipses to the set of curves that can be represented exactly. The term rational in NURBS refers to these weights. The control points can have any dimensionality. One-dimensional points just define a scalar function of the parameter. These are typically used in image processing programs to tune the brightness and color curves. Three-dimensional control points are used abundantly in 3D modeling, where they are used in the everyday meaning of the word 'point', a location in 3D space. Multi-dimensional points might be used to control sets of time-driven values, e.g. the different positional and rotational settings of a robot arm. NURBS surfaces are just an application of this. Each control 'point' is actually a full vector of control points, defining a curve. These curves share their degree and the number of control points, and span one dimension of the parameter space. By interpolating these control vectors over the other dimension of the parameter space, a continuous set of curves is obtained, defining the surface.

The knot vector


The knot vector is a sequence of parameter values that determines where and how the control points affect the NURBS curve. The number of knots is always equal to the number of control points plus curve degree plus one. The knot vector divides the parametric space in the intervals mentioned before, usually referred to as knot spans. Each time the parameter value enters a new knot span, a new control point becomes active, while an old control point is discarded. It

follows that the values in the knot vector should be in nondecreasing order, so (0, 0, 1, 2, 3, 3) is valid while (0, 0, 2, 1, 3, 3) is not. Consecutive knots can have the same value. This then defines a knot span of zero length, which implies that two control points are activated at the same time (and of course two control points become deactivated). This has impact on continuity of the resulting curve or its higher derivatives; for instance, it allows the creation of corners in an otherwise smooth NURBS curve. A number of coinciding knots is sometimes referred to as a knot with a certain multiplicity. Knots with multiplicity two or three are known as double or triple knots. The multiplicity of a knot is limited to the degree of the curve; since a higher multiplicity would split the curve into disjoint parts and it would leave control points unused. For first-degree NURBS, each knot is paired with a control point. The knot vector usually starts with a knot that has multiplicity equal to the order. This makes sense, since this activates the control points that have influence on the first knot span. Similarly, the knot vector usually ends with a knot of that multiplicity. Curves with such knot vectors start and end in a control point. The individual knot values are not meaningful by themselves; only the ratios of the difference between the knot values matter. Hence, the knot vectors (0, 0, 1, 2, 3, 3) and (0, 0, 2, 4, 6, 6) produce the same curve. The positions of the knot values influences the mapping of parameter space to curve space. Rendering a NURBS curve is usually done by stepping with a fixed stride through the parameter range. By changing the knot span lengths, more sample points can be used in regions where the curvature is high. Another use is in situations where the parameter value has some physical significance, for instance if the parameter is time and the curve describes the motion of a robot arm. The knot span lengths then translate into velocity and acceleration, which are essential to get right to prevent damage to the robot arm or its environment. This flexibility in the mapping is what the phrase non uniform in NURBS refers to. Necessary only for internal calculations, knots are usually not helpful to the users of modeling software. Therefore, many modeling applications do not make the knots editable or even visible. It's usually possible to establish reasonable knot vectors by looking at the variation in the control points. More recent versions of NURBS software (e.g., Autodesk Maya and Rhinoceros 3D) allow for interactive editing of knot positions, but this is significantly less intuitive than the editing of control points.

Order
The order of a NURBS curve defines the number of nearby control points that influence any given point on the curve. The curve is represented mathematically by a polynomial of degree one less than the order of the curve. Hence, second-order curves (which are represented by linear polynomials) are called linear curves, third-order curves are called quadratic curves, and fourth-order curves are called cubic curves. The number of control points must be greater than or equal to the order of the curve. In practice, cubic curves are the ones most commonly used. Fifth- and sixth-order curves are sometimes useful, especially for obtaining continuous higher order derivatives, but curves of higher orders are practically never used because they lead to internal numerical problems and tend to require disproportionately large calculation times

Manipulating NURBS objects


A number of transformations can be applied to a NURBS object. For instance, if some curve is defined using a certain degree and N control points, the same curve can be expressed using the same degree and N+1 control points. In the process a number of control points change position and a knot is inserted in the knot vector. These manipulations are used extensively during interactive design. When adding a control point, the shape of the curve should stay the same, forming the starting point for further adjustments. A number of these operations are discussed below.[7]

Knot insertion
As the term suggests, knot insertion inserts a knot into the knot vector. If the degree of the curve is , then control points are replaced by new ones. The shape of the curve stays the same. A knot can be inserted multiple times, up to the maximum multiplicity of the knot. This is sometimes referred to as knot refinement and can be achieved by an algorithm that is more efficient than repeated knot insertion.

Knot removal
Knot removal is the reverse of knot insertion. Its purpose is to remove knots and the associated control points in order to get a more compact representation. Obviously, this is not always possible while retaining the exact shape of the curve. In practice, a tolerance in the accuracy is used to determine whether a knot can be removed. The process is used to clean up after an interactive session in which control points may have been added manually, or after importing a curve from a different representation, where a straightforward conversion process leads to redundant control points.

Degree elevation
A NURBS curve of a particular degree can always be represented by a NURBS curve of higher degree. This is frequently used when combining separate NURBS curves, e.g. when creating a NURBS surface interpolating between a set of NURBS curves or when unifying adjacent curves. In the process, the different curves should be brought to the same degree, usually the maximum degree of the set of curves. The process is known as degree elevation.

Curvature
The most important property in differential geometry is the curvature . It describes the local properties (edges, corners, etc.) and relations between the first and second derivative, and thus, the precise curve shape. Having determined the derivatives it is easy to compute or approximated as the arclength from the second derivate . The direct computation of the curvature with these equations is the big advantage of parameterized curves against their polygonal representations.

Spline (mathematics)
In mathematics, a spline is a smooth polynomial function that is piecewise-defined, and possesses a high degree of smoothness at the places where the polynomial pieces connect (which are known as knots).[1][2]

In interpolating problems, spline interpolation is often referred to as polynomial interpolation because it yields similar results, even when using low-degree polynomials, while avoiding Runge's phenomenon for higher degrees. In computer graphics splines are popular curves because of the simplicity of their construction, their ease and accuracy of evaluation, and their capacity to approximate complex shapes through curve fitting and interactive curve design. The most commonly used splines are cubic spline, i.e., of order 3in particular, cubic B-spline and cubic Bzier spline. They are common, in particular, in spline interpolation simulating the function of flat splines. The term spline is derived from a flexible strip of metal commonly used by draftsmen to assist in drawing curved lines

Bzier surface
Bzier surfaces are a species of mathematical spline used in computer graphics, computeraided design, and finite element modeling. As with the Bzier curve, a Bzier surface is defined by a set of control points. Similar to interpolation in many respects, a key difference is that the surface does not, in general, pass through the central control points; rather, it is "stretched"

toward them as though each were an attractive force. They are visually intuitive, and for many applications, mathematically convenient.

Bzier surfaces in computer graphics


Bzier patch meshes are superior to meshes of triangles as a representation of smooth surfaces, since they are much more compact, easier to manipulate, and have much better continuity properties. In addition, other common parametric surfaces such as spheres and cylinders can be well approximated by relatively small numbers of cubic Bzier patches. However, Bzier patch meshes are difficult to render directly. One problem with Bzier patches is that calculating their intersections with lines is difficult, making them awkward for pure ray tracing or other direct geometric techniques which do not use subdivision or successive approximation techniques. They are also difficult to combine directly with perspective projection algorithms. For this reason, Bzier patch meshes are in general eventually decomposed into meshes of flat triangles by 3D rendering pipelines. In high-quality rendering, the subdivision is adjusted to be so fine that the individual triangle boundaries cannot be seen. To avoid a "blobby" look, fine detail is usually applied to Bzier surfaces at this stage using texture maps, bump maps and other pixel shader techniques. A Bzier patch of degree (m, n) may be constructed out of two Bzier triangles of degree m+n, or out of a single Bzier triangle of degree m + n, with the input domain as a square instead of as a triangle. A Bzier triangle of degree m may also be constructed out of a Bzier surface of degree (m, m), with the control points so that one edge is squashed to a point, or with the input domain as a triangle instead of as a square.

De Boor's algorithm
In the mathematical subfield of numerical analysis the de Boor's algorithm is a fast and numerically stable algorithm for evaluating spline curves in B-spline form. It is a generalization of the de Casteljau's algorithm for Bzier curves. The algorithm was devised by Carl R. de Boor. Simplified, potentially faster variants of the de Boor algorithm have been created but they suffer from comparatively lower stability.

The general setting is as follows. We would like to construct a curve whose shape is described by a sequence of p points , which plays the role of a control polygon. The curve can be described as a function of one parameter x. To pass through the sequence of points, the curve must satisfy . But this is not quite the case: in general we are satisfied that the curve "approximates" the control polygon. We assume that u0, ..., up-1 are given to us along with . One approach to solve this problem is by splines. A spline is a curve that is a piecewise nth degree polynomial. This means that, on any interval [ui, ui+1), the curve must be equal to a polynomial of degree at most n. It may be equal to different polynomials on different intervals. The polynomials must be synchronized: when the polynomials from intervals [ui-1, ui) and [ui, ui+1) meet at the point ui, they must have the same value at this point and their derivatives must be equal (to ensure that the curve is smooth). De Boor's algorithm is an algorithm which, given u0, ..., up-1 and
2

, finds the

value of spline curve at a point x. It uses O(n ) operations. Notice that the running time of the algorithm depends only on degree n and not on the number of points p.

Subdivision surface
A subdivision surface, in the field of 3D computer graphics, is a method of representing a smooth surface via the specification of a coarser piecewise linear polygon mesh. The smooth surface can be calculated from the coarse mesh as the limit of a recursive process of subdividing each polygonal face into smaller faces that better approximate the smooth surface.

First three steps of CatmullClark subdivision of a cube with subdivision surface below

Overview
The subdivision surfaces are defined recursively. The process starts with a given polygonal mesh. A refinement scheme is then applied to this mesh. This process takes that mesh and subdivides it, creating new vertices and new faces. The positions of the new vertices in the mesh are computed based on the positions of nearby old vertices. In some refinement schemes, the positions of old vertices might also be altered (possibly based on the positions of new vertices). This process produces a denser mesh than the original one, containing more polygonal faces. This resulting mesh can be passed through the same refinement scheme again and so on. The limit subdivision surface is the surface produced from this process being iteratively applied infinitely many times. In practical use however, this algorithm is only applied a limited number of times. The limit surface can also be calculated directly for most subdivision surfaces using the technique of Jos Stam,[1] which eliminates the need for recursive refinement.

Refinement schemes
Subdivision surface refinement schemes can be broadly classified into two categories: interpolating and approximating. Interpolating schemes are required to match the original position of vertices in the original mesh. Approximating schemes are not; they can and will adjust these positions as needed. In general, approximating schemes have greater smoothness, but editing applications that allow users to set exact surface constraints require an optimization step. This is analogous to spline surfaces and curves, where Bzier splines are required to interpolate certain control points, while B-splines are not. There is another division in subdivision surface schemes as well, the type of polygon that they operate on. Some function for quadrilaterals (quads), while others operate on triangles.

Approximating schemes
Approximating means that the limit surfaces approximate the initial meshes and that after subdivision, the newly generated control points are not in the limit surfaces. Examples of approximating subdivision schemes are:

CatmullClark (1978) generalized bi-cubic uniform B-spline to produce their subdivision scheme. For arbitrary initial meshes, this scheme generates limit surfaces that are C2 continuous everywhere except at extraordinary vertices where they are C1 continuous (Peters and Reif 1998). DooSabin - The second subdivision scheme was developed by Doo and Sabin (1978) who successfully extended Chaikin's corner-cutting method for curves to surfaces. They used the analytical expression of bi-quadratic uniform B-spline surface to generate their subdivision procedure to produce C1 limit surfaces with arbitrary topology for arbitrary initial meshes. Loop, Triangles - Loop (1987) proposed his subdivision scheme based on a quartic boxspline of six direction vectors to provide a rule to generate C2 continuous limit surfaces everywhere except at extraordinary vertices where they are C1 continuous. Mid-Edge subdivision scheme - The mid-edge subdivision scheme was proposed independently by PetersReif (1997) and HabibWarren (1999). The former used the mid-point of each edge to build the new mesh. The latter used a four-directional box spline to build the scheme. This scheme generates C1 continuous limit surfaces on initial meshes with arbitrary topology. 3 subdivision scheme - This scheme has been developed by Kobbelt (2000) and offers several interesting features: it handles arbitrary triangular meshes, it is C2 continuous everywhere except at extraordinary vertices where it is C1 continuous and it offers a natural adaptive refinement when required. It exhibits at least two specificities: it is a Dual scheme for triangle meshes and it has a slower refinement rate than primal ones.

Interpolating schemes
After subdivision, the control points of the original mesh and the new generated control points are interpolated on the limit surface. The earliest work was the butterfly scheme by Dyn, Levin and Gregory (1990), who extended the four-point interpolatory subdivision scheme for curves to a subdivision scheme for surface. Zorin, Schrder and Swelden (1996) noticed that the butterfly scheme cannot generate smooth surfaces for irregular triangle meshes and thus modified this scheme. Kobbelt (1996) further generalized the four-point interpolatory subdivision scheme for curves to the tensor product subdivision scheme for surfaces.

Butterfly, Triangles - named after the scheme's shape Midedge, Quads Kobbelt, Quads - a variational subdivision method that tries to overcome uniform subdivision drawbacks

Editing a subdivision surface


Subdivision surfaces can be naturally edited at different levels of subdivision. Starting with basic shapes you can use binary operators to create the correct topology. Then edit the coarse mesh to create the basic shape, then edit the offsets for the next subdivision step, then repeat

this at finer and finer levels. You can always see how your edit effect the limit surface via GPU evaluation of the surface. A surface designer may also start with a scanned in object or one created from a NURBS surface. The same basic optimization algorithms are used to create a coarse base mesh with the correct topology and then add details at each level so that the object may be edited at different levels. These types of surfaces may be difficult to work with because the base mesh does not have control points in the locations that a human designer would place them. With a scanned object this surface is easier to work with than a raw triangle mesh, but a NURBS object probably had well laid out control points which behave less intuitively after the conversion than before

Triangle mesh
A triangle mesh is a type of polygon mesh in computer graphics. It comprises a set of triangles (typically in three dimensions) that are connected by their common edges or corners. Many graphics software packages and hardware devices can operate more efficiently on triangles that are grouped into meshes than on a similar number of triangles that are presented

individually. This is typically because computer graphics do operations on the vertices at the corners of triangles. With individual triangles, the system has to operate on three vertices for every triangle. In a large mesh, there could be eight or more triangles meeting at a single vertex - by processing those vertices just once, it is possible to do a fraction of the work and achieve an identical effect.

Example of a triangle mesh representing a dolphin.

Representation
Various methods of storing and working with a mesh in computer memory are possible. With the OpenGL and DirectX APIs there are two primary ways of passing a triangle mesh to the graphics hardware, triangle strips and index arrays.

Triangle strip
One way of sharing vertex data between triangles is the triangle strip. With strips of triangles each triangle shares one complete edge with one neighbour and another with the next. OpenGL also supports the triangle fan which is a set of connected triangles sharing one central vertex. With these methods vertices are dealt with efficiently resulting in the need to only process N+2 vertices in order to draw N triangles. Triangle strips are efficient, however the drawback is that it may not be obvious how or convenient to translate an arbitrary triangle mesh into strips.

Index array
With index arrays, a mesh is represented by two separate arrays, one array holding the vertices, and another holding sets of three indices into that array which define a triangle. The graphics system processes the vertices first and renders the triangles afterwards, using the index sets working on the transformed data. In OpenGL, this is supported by the glDrawElements() primitive when using Vertex Buffer Object (VBO). With this method, any arbitrary set of triangles sharing any arbitrary number of vertices can be stored, manipulated, and passed to the graphics API, without any intermediary processing.

Polygon mesh

Example of a triangle mesh representing a dolphin. A polygon mesh or unstructured grid is a collection of vertices, edges and faces that defines the shape of a polyhedral object in 3D computer graphics and solid modeling. The faces usually consist of triangles, quadrilaterals or other simple convex polygons, since this simplifies rendering, but may also be composed of more general concave polygons, or polygons with holes. The study of polygon meshes is a large sub-field of computer graphics and geometric modeling. Different representations of polygon meshes are used for different applications and goals. The variety of operations performed on meshes may include Boolean logic, smoothing, simplification, and many others. Network representations, "streaming" and "progressive" meshes, are used to transmit polygon meshes over a network. Volumetric meshes are distinct from polygon meshes in that they explicitly represent both the surface and volume of a structure, while polygon meshes only explicitly represent the surface (the volume is implicit). As polygonal meshes are extensively used in computer graphics, algorithms also exist for Ray tracing, collision detection, and rigid-body dynamics of polygon meshes. Elements of mesh modeling

Objects created with polygon meshes must store different types of elements. These include vertices, edges, faces, polygons and surfaces. In many applications, only vertices, edges and either faces or polygons are stored. A renderer may support only 3-sided faces, so polygons must be constructed of many of these, as shown in Figure 1. However, many renderers either support quads and higher-sided polygons, or are able to triangulate polygons to triangles on the fly, making it unnecessary to store a mesh in a triangulated form. Also, in certain applications like head modeling, it is desirable to be able to create both 3- and 4-sided polygons.

A vertex is a position along with other information such as color, normal vector and texture coordinates. An edge is a connection between two vertices. A face is a closed set of edges, in which a triangle face has three edges, and a quad face has four edges. A polygon is a set of faces. In systems that support multi-sided faces, polygons and faces are equivalent. However, most rendering hardware supports only 3- or 4-sided faces, so polygons are represented as multiple faces. Mathematically a polygonal mesh may be considered an unstructured grid, or undirected graph, with addition properties of geometry, shape and topology. Surfaces, more often called smoothing groups, are useful, but not required to group smooth regions. Consider a cylinder with caps, such as a soda can. For smooth shading of the sides, all surface normals must point horizontally away from the center, while the normals of the caps must point in the +/-(0,0,1) directions. Rendered as a single, Phong-shaded surface, the crease vertices would have incorrect normals. Thus, some way of determining where to cease smoothing is needed to group smooth parts of a mesh, just as polygons group 3-sided faces. As an alternative to providing surfaces/smoothing groups, a mesh may contain other data for calculating the same data, such as a splitting angle (polygons with normals above this threshold are either automatically treated as separate smoothing groups or some technique such as splitting or chamfering is automatically applied to the edge between them). Additionally, very high resolution meshes are less subject to issues that would require smoothing groups, as their polygons are so small as to make the need irrelevant. Further, another alternative exists in the possibility of simply detaching the surfaces themselves from the rest of the mesh. Renderers do not attempt to smooth edges across noncontiguous polygons. Mesh format may or may not define other useful data. Groups may be defined which define separate elements of the mesh and are useful for determining separate sub-objects for skeletal animation or separate actors for non-skeletal animation. Generally materials will be defined, allowing different portions of the mesh to use different shaders when rendered. Most mesh formats also suppose some form of UV coordinates which are a separate 2d representation of the mesh "unfolded" to show what portion of a 2-dimensional texture map to apply to different polygons of the mesh.

Representations
Polygon meshes may be represented in a variety of ways, using different methods to store the vertex, edge and face data. These include:

Face-vertex meshes: A simple list of vertices, and a set of polygons that point to the vertices it uses. Winged-edge meshes, in which each edge points to two vertices, two faces, and the four (clockwise and counterclockwise) edges that touch it. Winged-edge meshes allow constant time traversal of the surface, but with higher storage requirements. Half-edge meshes: Similar to winged-edge meshes except that only half the edge traversal information is used. Quad-edge meshes, which store edges, half-edges, and vertices without any reference to polygons. The polygons are implicit in the representation, and may be found by traversing the structure. Memory requirements are similar to half-edge meshes. Corner-tables, which store vertices in a predefined table, such that traversing the table implicitly defines polygons. This is in essence the "triangle fan" used in hardware graphics rendering. The representation is more compact, and more efficient to retrieve polygons, but operations to change polygons are slow. Furthermore, corner-tables do not

represent meshes completely. Multiple corner-tables (triangle fans) are needed to represent most meshes. Vertex-vertex meshes: A "VV" mesh represents only vertices, which point to other vertices. Both the edge and face information is implicit in the representation. However, the simplicity of the representation allows for many efficient operations to be performed on meshes.

Each of the representations above have particular advantages and drawbacks, further discussed in Smith (2006).[1] The choice of the data structure is governed by the application, the performance required, size of the data, and the operations to be performed. For example, it is easier to deal with triangles than general polygons, especially in computational geometry. For certain operations it is necessary to have a fast access to topological information such as edges or neighboring faces; this requires more complex structures such as the winged-edge representation. For hardware rendering, compact, simple structures are needed; thus the corner-table (triangle fan) is commonly incorporated into low-level rendering APIs such as DirectX and OpenGL.

Vertex-vertex meshes

Vertex-vertex meshes represent an object as a set of vertices connected to other vertices. This is the simplest representation, but not widely used since the face and edge information is implicit. Thus, it is necessary to traverse the data in order to generate a list of faces for rendering. In addition, operations on edges and faces are not easily accomplished. However, VV meshes benefit from small storage space and efficient morphing of shape. Figure 2 shows the four-sided cylinder example represented using VV meshes. Each vertex indexes its neighboring vertices. Notice that the last two vertices, 8 and 9 at the top and bottom center of the "box-cylinder", have four connected vertices rather than five. A general system must be able to handle an arbitrary number of vertices connected to any given vertex. For a complete description of VV meshes see Smith (2006).[1]

Face-vertex meshes

Face-vertex meshes represent an object as a set of faces and a set of vertices. This is the most widely used mesh representation, being the input typically accepted by modern graphics hardware. Face-vertex meshes improve on VV-mesh for modeling in that they allow explicit lookup of the vertices of a face, and the faces surrounding a vertex. Figure 3 shows the "box-cylinder" example as an FV mesh. Vertex v5 is highlighted to show the faces that surround it. Notice that, in this example, every face is required to have exactly 3 vertices. However, this does not mean every vertex has the same number of surrounding faces. For rendering, the face list is usually transmitted to the GPU as a set of indices to vertices, and the vertices are sent as position/color/normal structures (in the figure, only position is given). This has the benefit that changes in shape, but not geometry, can be dynamically updated by simply resending the vertex data without updating the face connectivity. Modeling requires easy traversal of all structures. With face-vertex meshes it is easy to find the vertices of a face. Also, the vertex list contains a list of faces connected to each vertex. Unlike VV meshes, both faces and vertices are explicit, so locating neighboring faces and vertices is constant time. However, the edges are implicit, so a search is still needed to find all the faces surrounding a given face. Other dynamic operations, such as splitting or merging a face, are also difficult with face-vertex meshes.

Winged-edge meshes

Introduced by Baumgart 1975, winged-edge meshes explicitly represent the vertices, faces, and edges of a mesh. This representation is widely used in modeling programs to provide the greatest flexibility in dynamically changing the mesh geometry, because split and merge operations can be done quickly. Their primary drawback is large storage requirements and increased complexity due to maintaining many indices. A good discussion of implementation issues of Winged-edge meshes may be found in the book Graphics Gems II. Winged-edge meshes address the issue of traversing from edge to edge, and providing an ordered set of faces around an edge. For any given edge, the number of outgoing edges may be arbitrary. To simplify this, winged-edge meshes provide only four, the nearest clockwise and counter-clockwise edges at each end. The other edges may be traversed incrementally. The information for each edge therefore resembles a butterfly, hence "winged-edge" meshes. Figure 4 shows the "box-cylinder" as a winged-edge mesh. The total data for an edge consists of 2 vertices (endpoints), 2 faces (on each side), and 4 edges (winged-edge). Rendering of winged-edge meshes for graphics hardware requires generating a Face index list. This is usually done only when the geometry changes. winged-edge meshes are ideally suited

for dynamic geometry, such as subdivision surfaces and interactive modeling, since changes to the mesh can occur locally. Traversal across the mesh, as might be needed for collision detection, can be accomplished efficiently.

Render dynamic meshes


Winged-edge meshes are not the only representation which allows for dynamic changes to geometry. A new representation which combines winged-edge meshes and face-vertex meshes is the render dynamic mesh, which explicitly stores the vertices of a face (like FV meshes), the faces of a vertex (like FV meshes), and the faces and vertices of an edge (like winged-edge). Render dynamic meshes require slightly less storage space than standard winged-edge meshes, and can be directly rendered by graphics hardware since the face list contains an index of vertices. In addition, traversal from vertex to face is implicit (constant time), as is from face to vertex. RD meshes do not require the four outgoing edges since these can be found by traversing from edge to face, then face to neighboring edge. RD meshes benefit from the features of winged-edge meshes by allowing for geometry to be dynamically updated.

Wire-frame model

Sample rendering of a wireframe cube, icosahedron, and approximate sphere

A wireframe image using hidden line removal A wire frame model is a visual presentation of a three dimensional or physical object used in 3D computer graphics. It is created by specifying each edge of the physical object where two mathematically continuous smooth surfaces meet, or by connecting an object's constituent vertices using straight lines or curves. The object is projected onto the computer screen by drawing lines at the location of each edge.The term wireframe comes from designers using metal wire to represent the 3 dimensional shape of solid objects.3D wireframe allows to construct and manipulate solids and solid surfaces.3D solid modeling technique efficiently draws high quality representation of solids than the conventional line drawing. Using a wire frame model allows visualization of the underlying design structure of a 3D model. Traditional 2-dimensional views and drawings can be created by appropriate rotation of the object and selection of hidden line removal via cutting planes. Since wireframe renderings are relatively simple and fast to calculate, they are often used in cases where a high screen frame rate is needed (for instance, when working with a particularly complex 3D model, or in real-time systems that model exterior phenomena). When greater graphical detail is desired, surface textures can be added automatically after completion of the initial rendering of the wireframe. This allows the designer to quickly review chansolids or rotate the object to new desired views without long delays associated with more realistic rendering. The wire frame format is also well suited and widely used in programming tool paths for DNC (Direct Numerical Control) machine tools. Wire frame models were used extensively in video games to represent 3D objects during the 1980s and early 1990s when properly filled 3D objects would have been too complex to calculate and draw with the computers of the time. Wireframe models are also used as the input for CAM(computer-aided manufacturing). There are mainly three types of 3D CAD models. Wireframe is one of them and it is most abstract and least realistic. Other types of 3D CAD models are surface and solid. This method of modelling consists only lines,points and curves defining the edges of a object.

Introduction
Wireframing is one of the method of geometric modelling system. A wireframe model represents shape of solid object by its characteristics lins and points.There are two types of wireframe modelling.1)Pro's and 2)Con's.In Pro's user gives a simple input to create a shape.It is useful in developing system.While in Con's wireframe model,it does not include information about inside and outside boundary surfaces.Now-a-days in mechanical design wireframe models are used in defining complex solid objects.The designer makes wireframe model of a solid object first and then CAD operator reconstructs the object including detailed analysis.In this way a solid object is created indirectly by using wireframe technique.This technique has some advantage as follow-1)Generally the 3 dimensional solid objects are complex, wireframe model can be viewed in 1 dimension so this compactness helps designer.2)The solid object can be modified further.The designer can ignore the geometry inside surface while in solid modelling designer has to give consistent geometry for all details.3)Wireframe models require less space and also very few resources from CPU.

Simple example of wireframe model


An object is specified by two tables: the vertex table and the edge table. The vertex table consists of three-dimensional coordinate values for each vertex with reference to the origin, while the edge table specifies the start and end vertices for each edge. After the appropriate calculations have been performed to transform the 3D coordinates of the vertices into 2D screen coordinates, a nave interpretation could create a wireframe representation by simply drawing straight lines between the screen coordinates of the appropriate vertices using the edge list. Unlike representations designed for more detailed rendering, face information is not specified (it must be calculated if required for solid rendering).

Methods for creating 3D wireframe


1. Extrusion: It is technique for creating a 3D wireframe model by copying a 2D profile and extending it to a depth defined the operator. The result is a 3D wireframe of the profile. 2. Rotation: Rotation produces wireframe models by rotating a cross section or profile of the part about an axis.It is similar to extrusion except it is swept about an axis. 3. Extrusion with scale: Extrusion with scale technique comprises of defining the depth along with the facility of enlarging scale uniformly. 4. Using primitive shapes to build models.

Use of wireframe model


1. Viewing the model from any desired point-This can be obtained by changing line of sight. 2. To produce standard orthographic and auxiliary views:-Orthographic views are created by changing the line of sight so that it is perpendicular to the front,top and profile faces of the model for creating front view(elevation),top view(plan) and side view respectively.After the orthographic views are created,they must be edited to remove extraneous lines and to add hidden and centre lines so the drawing conforms with the standards. 3. To produce exploded and perspective view more easily.

4. To analyse distances within the structure and checking tolerances and interference. 5. To decrease number of prototypes required. 6. Editing the model:-Some CAD systems can automatically remove hidden lines using a command called hide.

Why wireframe models are ambiguous


Let us take an example of a cube as shown in the figure.it has 16 vertices and 32 edges. The inner cube denotes the hole.But we cannot guess whether direction of opening is front,back,sideways or any other direction.Hence this model of cube does not allow free interpretation.Hence as the wire frame models are ambiguous their uses are limited. However wireframe models are well known due to their efficiency of working.Wireframe models can provide feeling of final result without waiting for hours and days of designs.

Triangulation (geometry)
In geometry, a triangulation is a subdivision of a geometric object into simplices. In particular, in the plane it is a subdivision into triangles, hence the name. Triangulation of a 3-dimensional

volume would involve subdividing it into tetrahedrons ("pyramids" of various shapes and sizes) packed together. In most instances the triangles of a triangulation are required to meet edge-to-edge and vertexto-vertex. Different types of triangulation may be defined, depending both on what geometric object is to be subdivided and on how the subdivision is determined.

A triangulation T of is a subdivision of into (n + 1)-dimensional simplices such that any two simplices in T intersect in a common face or not at all, and any bounded set in intersects only finitely many simplices in T. That is, it is a locally finite simplicial complex that covers the entire space. A point set triangulation, i.e., a triangulation of a discrete set of points is a subdivision of the convex hull of the points into simplices such that any two simplices intersect in a common face or not at all and such that the set of vertices of the simplices coincides with . Frequently used and studied point set triangulations include the Delaunay triangulation (for points in general position, the set of triangles defined by three of the input points and not containing a fourth input point), and the minimumweight triangulation (the point set triangulation minimizing the sum of the edge lengths). In cartography, a triangulated irregular network is a point set triangulation of a set of two-dimensional points together with elevations for each point. Lifting each point from the plane to its elevated height lifts the triangles of the triangulation into threedimensional surfaces, which form an approximation of a three-dimensional landform. A polygon triangulation is a subdivision of a given polygon into triangles meeting edgeto-edge, again with the property that the set of triangle vertices coincides with the set of vertices of the polygon. Polygon triangulations may be found in linear time and form the basis of several important geometric algorithms, including a simple solution to the art gallery problem. The constrained Delaunay triangulation is an adaptation of the Delaunay triangulation from point sets to polygons or, more generally, to planar straight-line graphs. In the finite element method, triangulations are often used as the mesh underlying a computation. In this case, the triangles must form a subdivision of the domain to be simulated, but instead of restricting the vertices to input points it is allowed to add additional Steiner points as vertices. In order to be suitable as finite element meshes, a triangulation must have well-shaped triangles, according to criteria that depend on the details of the finite element simulation; for instance, some methods require that all triangles be right or acute, forming nonobtuse meshes. Many meshing techniques are known, including Delaunay refinement algorithms such as Chew's second algorithm and Ruppert's algorithm. In more general topological spaces, triangulations of a space generally refer to simplicial complexes that are homeomorphic to the space.

The concept of a triangulation may also be generalized somewhat to subdivisions into shapes related to triangles. In particular, a pseudotriangulation of a point set is a partition of the convex hull of the points into pseudotriangles, polygons that like triangles have exactly three convex vertices. As in point set triangulations, pseudotriangulations are required to have their vertices at the given input points.

Point cloud

A point cloud is a set of vertices in a three-dimensional coordinate system. These vertices are usually defined by X, Y, and Z coordinates, and typically are intended to be representative of the external surface of an object. Point clouds are most often created by 3D scanners. These devices measure in an automatic way a large number of points on the surface of an object, and often output a point cloud as a data file. The point cloud represents the set of points that the device has measured. As the result of a 3D scanning process point clouds are used for many purposes, including to create 3D CAD models for manufactured parts, metrology/quality inspection, and a multitude of visualization, animation, rendering and mass customization applications. While point clouds can be directly rendered and inspected,[1] usually point clouds themselves are generally not directly usable in most 3D applications, and therefore are usually converted to polygon or triangle mesh models, NURBS surface models, or CAD models through a process commonly referred to as surface reconstruction. There are many techniques for converting a point cloud to a 3D surface. Some approaches, like Delaunay triangulation, alpha shapes, and ball pivoting, build a network of triangles over the existing vertices of the point cloud, while other approaches convert the point cloud into a volumetric distance field and reconstruct the implicit surface so defined through a marching cubes algorithm.[2] One application in which point clouds are directly usable is industrial metrology or inspection. The point cloud of a manufactured part can be aligned to a CAD model (or even another point cloud), and compared to check for differences. These differences can be displayed as color maps that give a visual indicator of the deviation between the manufactured part and the CAD model. Geometric dimensions and tolerances can also be extracted directly from the point cloud. Point clouds can also be used to represent volumetric data used for example in medical imaging. Using point clouds multi-sampling and data compression is achieved.[3] In geographic information system, point clouds are one of the sources to make digital elevation model of the terrain.[4] The point clouds are also employed in order to generate 3D model of urban environment, e.g.[5]

Rational motion

In kinematics, the motion of a rigid body is defined as a continuous set of displacements. Oneparameter motions can be defined as a continuous displacement of moving object with respect to a fixed frame in Euclidean three-space (E3), where the displacement depends on one parameter, mostly identified as time. Rational motions are defined by rational functions (ratio of two polynomial functions) of time. They produce rational trajectories, and therefore they integrate well with the existing NURBS (Non-Uniform Rational B-Spline) based industry standard CAD/CAM systems. They are readily amenable to the applications of existing computer-aided geometric design (CAGD) algorithms. By combining kinematics of rigid body motions with NURBS geometry of curves and surfaces, methods have been developed for computer-aided design of rational motions. These CAD methods for motion design find applications in animation in computer graphics (key frame interpolation), trajectory planning in robotics (taught-position interpolation), spatial navigation in virtual reality, computer-aided geometric design of motion via interactive interpolation, CNC tool path planning, and task specification in mechanism synthesis.

Rigid body

In physics, a rigid body is an idealization of a solid body of finite size in which deformation is neglected. In other words, the distance between any two given points of a rigid body remains constant in time regardless of external forces exerted on it. Even though such an object cannot physically exist due to relativity, objects can normally be assumed to be perfectly rigid if they are not moving near the speed of light. In classical mechanics a rigid body is usually considered as a continuous mass distribution, while in quantum mechanics a rigid body is usually thought of as a collection of point masses. For instance, in quantum mechanics molecules (consisting of the point masses: electrons and nuclei) are often seen as rigid bodies (see classification of molecules as rigid rotors).

Kinematics
Linear and angular position
The position of a rigid body is the position of all the particles of which it is composed. To simplify the description of this position, we exploit the property that the body is rigid, namely that all its particles maintain the same distance relative to each other. If the body is rigid, it is sufficient to describe the position of at least three non-collinear particles. This makes it possible to reconstruct the position of all the other particles, provided that their time-invariant position relative to the three selected particles is known. However, typically a different, mathematically more convenient, but equivalent approach is used. The position of the whole body is represented by: 1. the linear position or position of the body, namely the position of one of the particles of the body, specifically chosen as a reference point (typically coinciding with the center of mass or centroid of the body), together with 2. the angular position (also known as orientation, or attitude) of the body. Thus, the position of a rigid body has two components: linear and angular, respectively.[2] The same is true for other kinematic and kinetic quantities describing the motion of a rigid body, such as linear and angular velocity, acceleration, momentum, impulse, and kinetic energy.[3] The linear position can be represented by a vector with its tail at an arbitrary reference point in space (the origin of a chosen coordinate system) and its tip at an arbitrary point of interest on the rigid body, typically coinciding with its center of mass or centroid. This reference point may define the origin of a coordinate system fixed to the body. There are several ways to numerically describe the orientation of a rigid body, including a set of three Euler angles, a quaternion, or a direction cosine matrix (also referred to as a rotation matrix). All these methods actually define the orientation of a basis set (or coordinate system) which has a fixed orientation relative to the body (i.e. rotates together with the body), relative to another basis set (or coordinate system), from which the motion of the rigid body is observed. For instance, a basis set with fixed orientation relative to an airplane can be defined as a set of three orthogonal unit vectors b1, b2, b3, such that b1 is parallel to the chord line of the wing and directed forward, b2 is normal to the plane of symmetry and directed rightward, and b3 is given by the cross product . In general, when a rigid body moves, both its position and orientation vary with time. In the kinematic sense, these changes are referred to as translation and rotation, respectively. Indeed,

the position of a rigid body can be viewed as a hypothetic translation and rotation (rototranslation) of the body starting from a hypothetic reference position (not necessarily coinciding with a position actually taken by the body during its motion).

Linear and angular velocity


Velocity (also called linear velocity) and angular velocity are measured with respect to a frame of reference. The linear velocity of a rigid body is a vector quantity, equal to the time rate of change of its linear position. Thus, it is the velocity of a reference point fixed to the body. During purely translational motion (motion with no rotation), all points on a rigid body move with the same velocity. However, when motion involves rotation, the instantaneous velocity of any two points on the body will generally not be the same. Two points of a rotating body will have the same instantaneous velocity only if they happen to lay on an axis parallel to the instantaneous axis of rotation. Angular velocity is a vector quantity that describes the angular speed at which the orientation of the rigid body is changing and the instantaneous axis about which it is rotating (the existence of this instantaneous axis is guaranteed by the Euler's rotation theorem). All points on a rigid body experience the same angular velocity at all times. During purely rotational motion, all points on the body change position except for those lying on the instantaneous axis of rotation. The relationship between orientation and angular velocity is not directly analogous to the relationship between position and velocity. Angular velocity is not the time rate of change of orientation, because there is no such concept as an orientation vector that can be differentiated to obtain the angular velocity.

B-spline
In the mathematical subfield of numerical analysis, a B-spline is a spline function that has minimal support with respect to a given degree, smoothness, and domain partition. B-splines were investigated as early as the nineteenth century by Nikolai Lobachevsky. A fundamental

theorem states that every spline function of a given degree, smoothness, and domain partition, can be uniquely represented as a linear combination of B-splines of that same degree and smoothness, and over that same partition.[1] The term "B-spline" was coined by Isaac Jacob Schoenberg and is short for basis spline.[2][3] Bsplines can be evaluated in a numerically stable way by the de Boor algorithm. Simplified, potentially faster variants of the de Boor algorithm have been created but they suffer from comparatively lower stability.[4][5] In the computer science subfields of computer-aided design and computer graphics, the term Bspline frequently refers to a spline curve parametrized by spline functions that are expressed as linear combinations of B-splines (in the mathematical sense above). A B-spline is simply a generalisation of a Bzier curve, and it can avoid the Runge phenomenon without increasing the degree of the B-spline.

P-spline
The term P-spline stands for "penalized B-spline". It refers to using the B-spline representation where the coefficients are determined partly by the data to be fitted, and partly by an additional penalty function that aims to impose smoothness to avoid overfitting.[9

OpenGL
OpenGL (Open Graphics Library)[3] is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The

interface consists of over 250 different function calls which can be used to draw complex threedimensional scenes from simple primitives. OpenGL was developed by Silicon Graphics Inc. (SGI) in 1992[4] and is widely used in CAD, virtual reality, scientific visualization, information visualization, flight simulation, and video games. OpenGL is managed by the non-profit technology consortium Khronos Group.

Design
OpenGL serves two main purposes, to: 1. hide complexities of interfacing with different 3D accelerators by presenting a single, uniform interface 2. hide differing capabilities of hardware platforms by requiring support of the full OpenGL feature set for all implementations (using software emulation if necessary) In its basic operation, OpenGL accepts primitives such as points, lines and polygons, and converts them into pixels via a graphics pipeline known as the OpenGL state machine. Most OpenGL commands either issue primitives to the graphics pipeline, or configure how the pipeline processes these primitives. Prior to the introduction of OpenGL 2.0, each stage of the pipeline performed a fixed function and was configurable only within tight limits. OpenGL 2.0 offers several stages that are fully programmable using GLSL. OpenGL is a low-level, procedural API, requiring the programmer to dictate the exact steps required to render a scene. This contrasts with descriptive (aka scene graph or retained mode) APIs, where a programmer only needs to describe a scene and can let the library manage the details of rendering it. OpenGL's low-level design requires programmers to have a good knowledge of the graphics pipeline, but also gives a certain amount of freedom to implement novel rendering algorithms. OpenGL has historically been influential on the development of 3D accelerators, promoting a base level of functionality that is now common in consumer-level hardware:

Simplified version of the Graphics Pipeline Process; excludes a number of features like blending, VBOs and logic ops

Rasterised points, lines and polygons as basic primitives

A transform and lighting pipeline Z-buffering Texture mapping Alpha blending

A brief description of the process in the graphics pipeline could be:[5] 1. Evaluation, if necessary, of the polynomial functions which define certain inputs, like NURBS surfaces, approximating curves and the surface geometry. 2. Vertex operations, transforming and lighting them depending on their material. Also clipping non-visible parts of the scene in order to produce the viewing volume. 3. Rasterisation or conversion of the previous information into pixels. The polygons are represented by the appropriate colour by means of interpolation algorithms. 4. Per-fragment operations, like updating values depending on incoming and previously stored depth values, or colour combinations, among others. 5. Lastly, fragments are inserted into the frame buffer. Many modern 3D accelerators provide functionality far above this baseline, but these new features are generally enhancements of this basic pipeline rather than radical revisions of it.

Vertex (computer graphics)


A vertex (plural vertices) in computer graphics is a data structure that describes a point in 2D or 3D space. Display objects are composed of arrays of flat surfaces (typically triangles) and vertices define the location and other attributes of the corners of the surfaces.

Application to object models


In computer graphics, objects are most-often represented as triangulated polyhedra. Non triangular surfaces can be converted to an array of triangles through tessellation. The vertices of triangles are associated not only with position but also with other graphical attributes used to render the object correctly. Such attributes can include color at the vertex point, reflectance of the surface at the vertex, textures of the surface at the vertex, and the normal of an approximated curved surface at the location of the vertex. These properties are used in rendering by a vertex shader or vertex pipeline.

The normal can be used to determine a surface's orientation toward a light source for flat shading using Lambert's cosine law, or the orientation of each of the vertices to mimic a curved surface with Phong shading.

Vertex attributes
Most attributes of a vertex represent vectors in the space to be rendered. Vectors can be 1 (x), 2 (x, y), or 3 (x, y, z) dimensional and can include a fourth homogeneous coordinate (w).

Isogeometric analysis
Isogeometric analysis is a recently developed computational approach that offers the possibility of integrating finite element analysis (FEA) into conventional NURBS-based CAD design tools. Currently, it is necessary to convert data between CAD and FEA packages to analyse new designs during development, a difficult task since the computational geometric approach for each is different. Isogeometric analysis employs complex NURBS geometry (the basis of most CAD packages) in the FEA application directly. This allows models to be designed, tested and adjusted in one go, using a common data set.[1] The pioneers of this technique are Tom Hughes and his group at the University of Texas at Austin.[2] A reference free software implementation of some isogeometric analysis methods is GeoPDEs [3].

Glossary of graph theory


Graph theory is a growing area in mathematical research, and has a large specialized vocabulary. Some authors use the same word with different meanings. Some authors use different words to mean the same thing. This page attempts to keep up with current usage.

Basics
A graph G consists of two types of elements, namely vertices and edges. Every edge has two endpoints in the set of vertices, and is said to connect or join the two endpoints. An edge can thus be defined as a set of two vertices (or an ordered pair, in the case of a directed graph - see Section Direction). Alternative models of graphs exist; e.g., a graph may be thought of as a Boolean binary function over the set of vertices or as a square (0,1)-matrix.

A vertex is simply drawn as a node or a dot. The vertex set of G is usually denoted by V(G), or V when there is no danger of confusion. The order of a graph is the number of its vertices, i.e. | V(G)|. An edge (a set of two elements) is drawn as a line connecting two vertices, called endpoints or (less often) endvertices. An edge with endvertices x and y is denoted by xy (without any symbol in between). The edge set of G is usually denoted by E(G), or E when there is no danger of confusion. The size of a graph is the number of its edges, i.e. |E(G)|.[1] A loop is an edge whose endpoints are the same vertex. A link has two distinct endvertices. An edge is multiple if there is another edge with the same endvertices; otherwise it is simple. The multiplicity of an edge is the number of multiple edges sharing the same end vertices; the multiplicity of a graph, the maximum multiplicity of its edges. A graph is a simple graph if it has no multiple edges or loops, a multigraph if it has multiple edges, but no loops, and a multigraph or pseudograph if it contains both multiple edges and loops (the literature is highly inconsistent). When stated without any qualification, a graph is almost always assumed to be simpleone has to judge from the context. Graphs whose edges or vertices have names or labels are known as labeled, those without as unlabeled. Graphs with labeled vertices only are vertex-labeled, those with labeled edges only are edge-labeled. The difference between a labeled and an unlabeled graph is that the latter has no specific set of vertices or edges; it is regarded as another way to look upon an isomorphism type of graphs. (Thus, this usage distinguishes between graphs with identifiable vertex or edge sets on the one hand, and isomorphism types or classes of graphs on the other.) (Graph labeling usually refers to the assignment of labels (usually natural numbers, usually distinct) to the edges and vertices of a graph, subject to certain rules depending on the situation. This should not be confused with a graph's merely having distinct labels or names on the vertices.)

A labeled simple graph with vertex set V = {1, 2, 3, 4, 5, 6} and edge set E = {{1,2}, {1,5}, {2,3}, {2,5}, {3,4}, {4,5}, {4,6}}. A hyperedge is an edge that is allowed to take on any number of vertices, possibly more than 2. A graph that allows any hyperedge is called a hypergraph. A simple graph can be considered a special case of the hypergraph, namely the 2-uniform hypergraph. However, when stated without any qualification, an edge is always assumed to consist of at most 2 vertices, and a graph is never confused with a hypergraph.

A non-edge (or anti-edge) is an edge that is not present in the graph. More formally, for two vertices and , is a non-edge in a graph whenever is not an edge in . This means that there is either no edge between the two vertices or (for directed graphs) at most one of and from is an arc in G.

Occasionally the term cotriangle or anti-triangle is used for a set of three vertices none of which are connected. The complement of a graph G is a graph with the same vertex set as G but with an edge set such that xy is an edge in if and only if xy is not an edge in G. An edgeless graph or empty graph or null graph is a graph with zero or more vertices, but no edges. The empty graph or null graph may also be the graph with no vertices and no edges. If it is a graph with no edges and any number of vertices, it may be called the null graph on vertices. (There is no consistency at all in the literature.) A graph is infinite if it has infinitely many vertices or edges or both; otherwise the graph is finite. An infinite graph where every vertex has finite degree is called locally finite. When stated without any qualification, a graph is usually assumed to be finite. See also continuous graph. Two graphs G and H are said to be isomorphic, denoted by G ~ H, if there is a one-to-one correspondence, called an isomorphism, between the vertices of the graph such that two vertices are adjacent in G if and only if their corresponding vertices are adjacent in H. Likewise, a graph G is said to be homomorphic to a graph H if there is a mapping, called a homomorphism, from V(G) to V(H) such that if two vertices are adjacent in G then their corresponding vertices are adjacent in H.

Subgraphs
A subgraph of a graph G is a graph whose vertex set is a subset of that of G, and whose adjacency relation is a subset of that of G restricted to this subset. In the other direction, a supergraph of a graph G is a graph of which G is a subgraph. We say a graph G contains another graph H if some subgraph of G is H or is isomorphic to H. A subgraph H is a spanning subgraph, or factor, of a graph G if it has the same vertex set as G. We say H spans G. A subgraph H of a graph G is said to be induced if, for any pair of vertices x and y of H, xy is an edge of H if and only if xy is an edge of G. In other words, H is an induced subgraph of G if it has exactly the edges that appear in G over the same vertex set. If the vertex set of H is the subset S of V(G), then H can be written as G[S] and is said to be induced by S. A graph that does not contain H as an induced subgraph is said to be H-free.[citation needed] A universal graph in a class K of graphs is a simple graph in which every element in K can be embedded as a subgraph.

A graph G is minimal with some property P provided that G has property P and no proper subgraph of G has property P. In this definition, the term subgraph is usually understood to mean "induced subgraph." The notion of maximality is defined dually: G is maximal with P provided that P(G) and G has no supergraph H such that P(H). Many important classes of graphs can be defined by sets of forbidden subgraphs, the minimal graphs that are not in the class.

Walks
A walk is an alternating sequence of vertices and edges, beginning and ending with a vertex, where each vertex is incident to both the edge that precedes it and the edge that follows it in the sequence, and where the vertices that precede and follow an edge are the end vertices of that edge. A walk is closed if its first and last vertices are the same, and open if they are different. The length l of a walk is the number of edges that it uses. For an open walk, l = n1, where n is the number of vertices visited (a vertex is counted each time it is visited). For a closed walk, l = n (the start/end vertex is listed twice, but is not counted twice). In the example graph, (1, 2, 5, 1, 2, 3) is an open walk with length 5, and (4, 5, 2, 1, 5, 4) is a closed walk of length 5. A trail is a walk in which all the edges are distinct. A closed trail has been called a tour or circuit, but these are not universal, and the latter is often reserved for a regular subgraph of degree two.

A directed cycle. Without the arrows, it is just a cycle. This is not a simple cycle, since the blue vertices are used twice. Traditionally, a path referred to what is now usually known as an open walk. Nowadays, when stated without any qualification, a path is usually understood to be simple, meaning that no vertices (and thus no edges) are repeated. (The term chain has also been used to refer to a walk in which all vertices and edges are distinct.) In the example graph, (5, 2, 1) is a path of length 2. The closed equivalent to this type of walk, a walk that starts and ends at the same vertex but otherwise has no repeated vertices or edges, is called a cycle. Like path, this term traditionally referred to any closed walk, but now is usually understood to be simple by definition. In the example graph, (1, 5, 2, 1) is a cycle of length 3. (A cycle, unlike a path, is not allowed to have length 0.) Paths and cycles of n vertices are often denoted by Pn and Cn, respectively. (Some authors use the length instead of the number of vertices, however.)

C1 is a loop, C2 is a digon (a pair of parallel undirected edges in a multigraph, or a pair of antiparallel edges in a directed graph), and C3 is called a triangle. A cycle that has odd length is an odd cycle; otherwise it is an even cycle. One theorem is that a graph is bipartite if and only if it contains no odd cycles. (See complete bipartite graph.) A graph is acyclic if it contains no cycles; unicyclic if it contains exactly one cycle; and pancyclic if it contains cycles of every possible length (from 3 to the order of the graph). The girth of a graph is the length of a shortest (simple) cycle in the graph; and the circumference, the length of a longest (simple) cycle. The girth and circumference of an acyclic graph are defined to be infinity . A path or cycle is Hamiltonian (or spanning) if it uses all vertices exactly once. A graph that contains a Hamiltonian path is traceable; and one that contains a Hamiltonian path for any given pair of (distinct) end vertices is a Hamiltonian connected graph. A graph that contains a Hamiltonian cycle is a Hamiltonian graph. A trail or circuit (or cycle) is Eulerian if it uses all edges precisely once. A graph that contains an Eulerian trail is traversable. A graph that contains an Eulerian circuit is an Eulerian graph. Two paths are internally disjoint (some people call it independent) if they do not have any vertex in common, except the first and last ones. A theta graph is the union of three internally disjoint (simple) paths that have the same two distinct end vertices. A theta0 graph has seven vertices which can be arranged as the vertices of a regular hexagon plus an additional vertex in the center. The eight edges are the perimeter of the hexagon plus one diameter.

Trees

A labeled tree with 6 vertices and 5 edges. A tree is a connected acyclic simple graph. For directed graphs, each vertex has at most one incoming edge. A vertex of degree 1 is called a leaf, or pendant vertex. An edge incident to a leaf is a leaf edge, or pendant edge. (Some people define a leaf edge as a leaf and then define a

leaf vertex on top of it. These two sets of definitions are often used interchangeably.) A non-leaf vertex is an internal vertex. Sometimes, one vertex of the tree is distinguished, and called the root; in this case, the tree is called rooted. Rooted trees are often treated as directed acyclic graphs with the edges pointing away from the root. A subtree of the tree T is a connected subgraph of T. A forest is an acyclic simple graph. For directed graphs, each vertex has at most one incoming edge. (That is, a tree with the connectivity requirement removed; a graph containing multiple disconnected trees.) A subforest of the forest F is a subgraph of F. A spanning tree is a spanning subgraph that is a tree. Every graph has a spanning forest. But only a connected graph has a spanning tree. A special kind of tree called a star is K1,k. An induced star with 3 edges is a claw. A caterpillar is a tree in which all non-leaf nodes form a single path. A k-ary tree is a rooted tree in which every internal vertex has k children. A 1-ary tree is just a path. A 2-ary tree is also called a binary tree.

Cliques

K5, a complete graph. If a subgraph looks like this, the vertices in that subgraph form a clique of size 5. The complete graph Kn of order n is a simple graph with n vertices in which every vertex is adjacent to every other. The example graph to the right is complete. The complete graph on n vertices is often denoted by Kn. It has n(n-1)/2 edges (corresponding to all possible choices of pairs of vertices). A clique in a graph is a set of pairwise adjacent vertices. Since any subgraph induced by a clique is a complete subgraph, the two terms and their notations are usually used interchangeably. A k-clique is a clique of order k. In the example graph above, vertices 1, 2 and 5 form a 3-clique, or a triangle. A maximal clique is a clique that is not a subset of any other clique (some authors reserve the term clique for maximal cliques).

The clique number (G) of a graph G is the order of a largest clique in G.

Strongly connected component


A related but weaker concept is that of a strongly connected component. Informally, a strongly connected component of a directed graph is a subgraph where all nodes in the subgraph are reachable by all other nodes in the subgraph. Reachability between nodes is established by the existence of a path between the nodes. A directed graph can be decomposed into strongly connected components by running the depthfirst search (DFS) algorithm twice: first, on the graph itself and next on the transpose graph in decreasing order of the finishing times of the first DFS. Given a directed graph G, the transpose GT is the graph G with all the edge directions reversed.

Knots
A knot in a directed graph is a collection of vertices and edges with the property that every vertex in the knot has outgoing edges, and all outgoing edges from vertices in the knot terminate at other vertices in the knot. Thus it is impossible to leave the knot while following the directions of the edges.

Minors
A minor of is an injection from to such that every edge in corresponds to a path (disjoint from all other such paths) in such that every vertex in is in one or more paths, or is part of the injection from to . This can alternatively be phrased in terms of contractions, which are operations which collapse a path and all vertices on it into a single edge (see Minor (graph theory)).

Embedding
An embedding every edge in of is an injection from to such that corresponds to a path (disjoint from all other such paths) in .

Adjacency and degree


In graph theory, degree, especially that of a vertex, is usually a measure of immediate adjacency. An edge connects two vertices; these two vertices are said to be incident to that edge, or, equivalently, that edge incident to those two vertices. All degree-related concepts have to do with adjacency or incidence. The degree, or valency, dG(v) of a vertex v in a graph G is the number of edges incident to v, with loops being counted twice. A vertex of degree 0 is an isolated vertex. A vertex of degree 1 is a leaf. In the labelled simple graph example, vertices 1 and 3 have a degree of 2, vertices 2, 4 and 5 have a degree of 3, and vertex 6 has a degree of 1. If E is finite, then the total sum of vertex degrees is equal to twice the number of edges.

The total degree of a graph is equal to two times the number of edges, loops included. This means that for a graph with 3 vertices with each vertex having a degree of two (i.e. a triangle) the total degree would be six (e.g. 3 x 2 = 6). The general formula for this is total degree = 2n where n = number of edges. A degree sequence is a list of degrees of a graph in non-increasing order (e.g. d1 d2 dn). A sequence of non-increasing integers is realizable if it is a degree sequence of some graph. Two vertices u and v are called adjacent if an edge exists between them. We denote this by u ~ v or u v. In the above graph, vertices 1 and 2 are adjacent, but vertices 2 and 4 are not. The set of neighbors of v, that is, vertices adjacent to v not including v itself, forms an induced subgraph called the (open) neighborhood of v and denoted NG(v). When v is also included, it is called a closed neighborhood and denoted by NG[v]. When stated without any qualification, a neighborhood is assumed to be open. The subscript G is usually dropped when there is no danger of confusion; the same neighborhood notation may also be used to refer to sets of adjacent vertices rather than the corresponding induced subgraphs. In the example graph, vertex 1 has two neighbors: vertices 2 and 5. For a simple graph, the number of neighbors that a vertex has coincides with its degree. A dominating set of a graph is a vertex subset whose closed neighborhood includes all vertices of the graph. A vertex v dominates another vertex u if there is an edge from v to u. A vertex subset V dominates another vertex subset U if every vertex in U is adjacent to some vertex in V. The minimum size of a dominating set is the domination number (G). In computers, a finite, directed or undirected graph (with n vertices, say) is often represented by its adjacency matrix: an n-by-n matrix whose entry in row i and column j gives the number of edges from the i-th to the j-th vertex. Spectral graph theory studies relationships between the properties of a graph and its adjacency matrix or other matrices associated with the graph. The maximum degree (G) of a graph G is the largest degree over all vertices; the minimum degree (G), the smallest. A graph in which every vertex has the same degree is regular. It is k-regular if every vertex has degree k. A 0-regular graph is an independent set. A 1-regular graph is a matching. A 2regular graph is a vertex disjoint union of cycles. A 3-regular graph is said to be cubic, or trivalent. A k-factor is a k-regular spanning subgraph. A 1-factor is a perfect matching. A partition of edges of a graph into k-factors is called a k-factorization. A k-factorable graph is a graph that admits a k-factorization. A graph is biregular if it has unequal maximum and minimum degrees and every vertex has one of those two degrees. A strongly regular graph is a regular graph such that any adjacent vertices have the same number of common neighbors as other adjacent pairs and that any nonadjacent vertices have the same number of common neighbors as other nonadjacent pairs.

Independence
In graph theory, the word independent usually carries the connotation of pairwise disjoint or mutually nonadjacent. In this sense, independence is a form of immediate nonadjacency. An isolated vertex is a vertex not incident to any edges. An independent set, or coclique, or stable set or staset, is a set of vertices of which no pair is adjacent. Since the graph induced by any independent set is an empty graph, the two terms are usually used interchangeably. In the example above, vertices 1, 3, and 6 form an independent set; and 3, 5, and 6 form another one. Two subgraphs are edge disjoint if they have no edges in common. Similarly, two subgraphs are vertex disjoint if they have no vertices (and thus, also no edges) in common. Unless specified otherwise, a set of disjoint subgraphs are assumed to be pairwise vertex disjoint. The independence number (G) of a graph G is the size of the largest independent set of G. A graph can be decomposed into independent sets in the sense that the entire vertex set of the graph can be partitioned into pairwise disjoint independent subsets. Such independent subsets are called partite sets, or simply parts. A graph that can be decomposed into two partite sets bipartite; three sets , tripartite; k sets , kpartite; and an unknown number of sets, multipartite. An 1-partite graph is the same as an independent set, or an empty graph. A 2-partite graph is the same as a bipartite graph. A graph that can be decomposed into k partite sets is also said to be k-colourable. A complete multipartite graph is a graph in which vertices are adjacent if and only if they belong to different partite sets. A complete bipartite graph is also referred to as a biclique; if its partite sets contain n and m vertices, respectively, then the graph is denoted Kn,m. A k-partite graph is semiregular if each of its partite sets has a uniform degree; equipartite if each partite set has the same size; and balanced k-partite if each partite set differs in size by at most 1 with any other. The matching number disjoint edges, of G. of a graph G is the size of a largest matching, or pairwise vertex

A spanning matching, also called a perfect matching is a matching that covers all vertices of a graph.

Connectivity
Connectivity extends the concept of adjacency and is essentially a form (and measure) of concatenated adjacency. If it is possible to establish a path from any vertex to any other vertex of a graph, the graph is said to be connected; otherwise, the graph is disconnected. A graph is totally disconnected if there is no path connecting any pair of vertices. This is just another name to describe an empty graph or independent set.

A cut vertex, or articulation point, is a vertex whose removal disconnects the remaining subgraph. A cut set, or vertex cut or separating set, is a set of vertices whose removal disconnects the remaining subgraph. A bridge is an analogous edge (see below). If it is always possible to establish a path from any vertex to every other even after removing any k - 1 vertices, then the graph is said to be k-vertex-connected or k-connected. Note that a graph is k-connected if and only if it contains k internally disjoint paths between any two vertices. The example graph above is connected (and therefore 1-connected), but not 2connected. The vertex connectivity or connectivity (G) of a graph G is the minimum number of vertices that need to be removed to disconnect G. The complete graph Kn has connectivity n 1 for n > 1; and a disconnected graph has connectivity 0. In network theory, a giant component is a connected subgraph that contains a majority of the entire graph's nodes. A bridge, or cut edge or isthmus, is an edge whose removal disconnects a graph. (For example, all the edges in a tree are bridges.) A disconnecting set is a set of edges whose removal increases the number of components. An edge cut is the set of all edges which have one vertex in some proper vertex subset S and the other vertex in V(G)\S. Edges of K3 form a disconnecting set but not an edge cut. Any two edges of K3 form a minimal disconnecting set as well as an edge cut. An edge cut is necessarily a disconnecting set; and a minimal disconnecting set of a nonempty graph is necessarily an edge cut. A bond is a minimal (but not necessarily minimum), nonempty set of edges whose removal disconnects a graph. A cut vertex is an analogous vertex (see above). A graph is k-edge-connected if any subgraph formed by removing any k - 1 edges is still connected. The edge connectivity '(G) of a graph G is the minimum number of edges needed to disconnect G. One well-known result is that (G) '(G) (G). A component is a maximally connected subgraph. A block is either a maximally 2-connected subgraph, a bridge (together with its vertices), or an isolated vertex. A biconnected component is a 2-connected component. An articulation point (also known as a separating vertex) of a graph is a vertex whose removal from the graph increases its number of connected components. A biconnected component can be defined as a subgraph induced by a maximal set of nodes that has no separating vertex.

Distance
The distance dG(u, v) between two (not necessary distinct) vertices u and v in a graph G is the length of a shortest path between them. The subscript G is usually dropped when there is no danger of confusion. When u and v are identical, their distance is 0. When u and v are unreachable from each other, their distance is defined to be infinity . The eccentricity G(v) of a vertex v in a graph G is the maximum distance from v to any other vertex. The diameter diam(G) of a graph G is the maximum eccentricity over all vertices in a graph; and the radius rad(G), the minimum. When there are two components in G, diam(G) and rad(G) defined to be infinity . Trivially, diam(G) 2 rad(G). Vertices with maximum eccentricity are called peripheral vertices. Vertices of minimum eccentricity form the center. A tree has at most two center vertices.

The Wiener index of a vertex v in a graph G, denoted by WG(v) is the sum of distances between v and all others. The Wiener index of a graph G, denoted by W(G), is the sum of distances over all pairs of vertices. An undirected graph's Wiener polynomial is defined to be qd(u,v) over all unordered pairs of vertices u and v. Wiener index and Wiener polynomial are of particular interest to mathematical chemists. The k-th power Gk of a graph G is a supergraph formed by adding an edge between all pairs of vertices of G with distance at most k. A second power of a graph is also called a square. A k-spanner is a spanning subgraph, S, in which every two vertices are at most k times as far apart on S than on G. The number k is the dilation. k-spanner is used for studying geometric network optimization.

Genus
A crossing is a pair of intersecting edges. A graph is embeddable on a surface if its vertices and edges can be arranged on it without any crossing. The genus of a graph is the lowest genus of any surface on which the graph can embed. A planar graph is one which can be drawn on the (Euclidean) plane without any crossing; and a plane graph, one which is drawn in such fashion. In other words, a planar graph is a graph of genus 0. The example graph is planar; the complete graph on n vertices, for n> 4, is not planar. Also, a tree is necessarily a planar graph. When a graph is drawn without any crossing, any cycle that surrounds a region without any edges reaching from the cycle into the region forms a face. Two faces on a plane graph are adjacent if they share a common edge. A dual, or planar dual when the context needs to be clarified, G* of a plane graph G is a graph whose vertices represent the faces, including any outerface, of G and are adjacent in G* if and only if their corresponding faces are adjacent in G. The dual of a planar graph is always a planar pseudograph (e.g. consider the dual of a triangle). In the familiar case of a 3-connected simple planar graph G (isomorphic to a convex polyhedron P), the dual G* is also a 3-connected simple planar graph (and isomorphic to the dual polyhedron P*). Furthermore, since we can establish a sense of "inside" and "outside" on a plane, we can identify an "outermost" region that contains the entire graph if the graph does not cover the entire plane. Such outermost region is called an outer face. An outerplanar graph is one which can be drawn in the planar fashion such that its vertices are all adjacent to the outer face; and an outerplane graph, one which is drawn in such fashion. The minimum number of crossings that must appear when a graph is drawn on a plane is called the crossing number. The minimum number of planar graphs needed to cover a graph is the thickness of the graph.

Weighted graphs and networks


A weighted graph associates a label (weight) with every edge in the graph. Weights are usually real numbers. They may be restricted to rational numbers or integers. Certain algorithms require further restrictions on weights; for instance, Dijkstra's algorithm works properly only for

positive weights. The weight of a path or the weight of a tree in a weighted graph is the sum of the weights of the selected edges. Sometimes a non-edge is labeled by a special weight representing infinity. Sometimes the word cost is used instead of weight. When stated without any qualification, a graph is always assumed to be unweighted. In some writing on graph theory the term network is a synonym for a weighted graph. A network may be directed or undirected, it may contain special vertices (nodes), such as source or sink. The classical network problems include:

minimum cost spanning tree, shortest paths, maximal flow (and the max-flow min-cut theorem)

Direction
A directed arc, or directed edge, is an ordered pair of endvertices that can be represented graphically as an arrow drawn between the endvertices. In such an ordered pair the first vertex is called the initial vertex or tail; the second one is called the terminal vertex or head (because it appears at the arrow head). An undirected edge disregards any sense of direction and treats both endvertices interchangeably. A loop in a digraph, however, keeps a sense of direction and treats both head and tail identically. A set of arcs are multiple, or parallel, if they share the same head and the same tail. A pair of arcs are anti-parallel if one's head/tail is the other's tail/head. A digraph, or directed graph, or oriented graph, is analogous to an undirected graph except that it contains only arcs. A mixed graph may contain both directed and undirected edges; it generalizes both directed and undirected graphs. When stated without any qualification, a graph is almost always assumed to be undirected. A digraph is called simple if it has no loops and at most one arc between any pair of vertices. When stated without any qualification, a digraph is usually assumed to be simple. In a digraph , we distinguish the out degree d+(v), the number of edges leaving a vertex v, and the in degree d-(v), the number of edges entering a vertex v. If the graph is oriented, the degree d(v) of a vertex v is equal to the sum of its out- and in- degrees. When the context is clear, the subscript can be dropped. Maximum and minimum out degrees are denoted by + () and +(); and maximum and minimum in degrees, -() and -(). An out-neighborhood, or successor set, N+(v) of a vertex v is the set of heads of arcs going from v. Likewise, an in-neighborhood, or predecessor set, N-(v) of a vertex v is the set of tails of arcs going into v. A source is a vertex with 0 in-degree; and a sink, 0 out-degree. A vertex v dominates another vertex u if there is an arc from v to u. A vertex subset S is outdominating if every vertex not in S is dominated by some vertex in S; and in-dominating if every vertex in S is dominated by some vertex not in S. A kernel in a graph G is an independent set S so that (G \ S) is an out-dominating set. A digraph is kernel perfect if every induced sub-digraph has a kernel.[2] An Eulerian digraph is a digraph with equal in- and out-degrees at every vertex.

The zweieck of an undirected edge form the simple dicircuit.

is the pair of diedges

and

which

An orientation is an assignment of directions to the edges of an undirected or partially directed graph. When stated without any qualification, it is usually assumed that all undirected edges are replaced by a directed one in an orientation. Also, the underlying graph is usually assumed to be undirected and simple. A tournament is a digraph in which each pair of vertices is connected by exactly one arc. In other words, it is an oriented complete graph. A directed path, or just a path when the context is clear, is an oriented simple path such that all arcs go the same direction, meaning all internal vertices have in- and out-degrees 1. A vertex v is reachable from another vertex u if there is a directed path that starts from u and ends at v. Note that in general the condition that u is reachable from v does not imply that v is also reachable from u. If v is reachable from u, then u is a predecessor of v and v is a successor of u. If there is an arc from u to v, then u is a direct predecessor of v, and v is a direct successor of u. A digraph is strongly connected if every vertex is reachable from every other following the directions of the arcs. On the contrary, a digraph is weakly connected if its underlying undirected graph is connected. A weakly connected graph can be thought of as a digraph in which every vertex is "reachable" from every other but not necessarily following the directions of the arcs. A strong orientation is an orientation that produces a strongly connected digraph. A directed cycle, or just a cycle when the context is clear, is an oriented simple cycle such that all arcs go the same direction, meaning all vertices have in- and out-degrees 1. A digraph is acyclic if it does not contain any directed cycle. A finite, acyclic digraph with no isolated vertices necessarily contains at least one source and at least one sink. An arborescence, or out-tree or branching, is an oriented tree in which all vertices are reachable from a single vertex. Likewise, an in-tree is an oriented tree in which a single vertex is reachable from every other one.

Directed acyclic graphs


The partial order structure of directed acyclic graphs (or DAGs) gives them their own terminology. If there is a directed edge from u to v, then we say u is a parent of v and v is a child of u. If there is a directed path from u to v, we say u is an ancestor of v and v is a descendant of u. The moral graph of a DAG is the undirected graph created by adding an (undirected) edge between all parents of the same node (sometimes called marrying), and then replacing all directed edges by undirected edges. A DAG is perfect if, for each node, the set of parents is complete (i.e. no new edges need to be added when forming the moral graph).

Colouring
Vertices in graphs can be given colours to identify or label them. Although they may actually be rendered in diagrams in different colours, working mathematicians generally pencil in numbers or letters (usually numbers) to represent the colours. Given a graph G (V,E) a k-colouring of G is a map : V {1, ... , k} with the property that (u, v) E (u) (v) - in other words, every vertex is assigned a colour with the condition that adjacent vertices cannot be assigned the same colour. The chromatic number (G) is the smallest k for which G has a k-colouring. Given a graph and a colouring, the colour classes of the graph are the sets of vertices given the same colour.

Various
A graph invariant is a property of a graph G, usually a number or a polynomial, that depends only on the isomorphism class of G. Examples are the order, genus, chromatic number, and chromatic polynomial of a graph.

Você também pode gostar