Abstract graphical data type

Last updated

An abstract graphical data type (AGDT) is an extension of an abstract data type for computer graphics. AGDTs provide the advantages of the ADTs with facilities to build graphical objects in a structured way. Formally, an AGDT may be defined as a "class of graphical objects whose logical behavior is defined by a set of graphical characteristics and a set of graphical operations".

In computer science, an abstract data type (ADT) is a mathematical model for data types, where a data type is defined by its behavior (semantics) from the point of view of a user of the data, specifically in terms of possible values, possible operations on data of this type, and the behavior of these operations. This contrasts with data structures, which are concrete representations of data, and are the point of view of an implementer, not a user.

Computer graphics graphics created using computers

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

AGDTs were introduced in 1979 by Nadia Magnenat Thalmann and Daniel Thalmann. [1]

Nadia Magnenat Thalmann computer scientist

Professor Nadia Magnenat Thalmann is an eminent computer graphics scientist who is the founder and head of MIRALab at the University of Geneva. She presently serves as the Director of the Institute for Media Innovation (IMI) in Singapore at Nanyang Technological University (NTU).

Daniel Thalmann Swiss computer scientist

Prof. Daniel Thalmann is a Swiss and Canadian Computer Scientist and a pioneer in Virtual Humans. He is currently Honorary Professor at EPFL, Switzerland, and Director of Research Development at MIRALab Sarl.

The most important tool in this graphical extension is the 3-D graphical type—the figure type. The syntax is described in Figure 2. The word "figure" is a keyword. The formal parameter section, the declaration, and the body are similar to the corresponding elements in a procedure.

To define a figure type, one must

  1. find the characteristics of the figure, which become the parameters;
  2. find the algorithm that allows the user to build the figure with the help of the parameters.

To build the figures, typical graphical statements should be used like: moveabs, moverel, lineabs, and linerel to draw vectors, and include to define an existing figure as part of a new one.

For example, a pyramid with four vertices can be defined as

Pyramid structure whose shape is roughly that of a pyramid in the geometric sense

A pyramid is a structure whose outer surfaces are triangular and converge to a single point at the top, making the shape roughly a pyramid in the geometric sense. The base of a pyramid can be trilateral, quadrilateral, or of any polygon shape. As such, a pyramid has at least three outer triangular surfaces. The square pyramid, with a square base and four triangular outer surfaces, is a common version.

type PYRAMID = figure (A, B, C, D: VECTOR); begin moveabs A; lineabs B, C, A, D, C; moveabs B; lineabs D end; 

A tree can be defined by 3-D graphical types as

type TREE = figure (var BRANCHES: TEXT; NBRANCHES: INTEGER; POSITION: VECTOR; HEIGHT, LENGTH:REAL); 

where BRANCHES is a file of kinds of branches, NBRANCHES is the number of branches, POSITION is the position of the trunk, HEIGHT is the height of the trunk, and LENGTH is the length of the branches.

A forest of trees can be defined as

var FOREST: array [1..NBTREES] of TREE 

Abstract graphical types have been implemented as an extension of the PASCAL programming language called MIRA-3D. [2]

Pascal is an imperative and procedural programming language, which Niklaus Wirth designed in 1968–69 and published in 1970, as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named in honor of the French mathematician, philosopher and physicist Blaise Pascal.

Related Research Articles

Data structure particular way of storing and organizing data in a computer

In computer science, a data structure is a data organization, management and storage format that enables efficient access and modification. More precisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data.

Oberon (programming language) programming language

Oberon is a general-purpose programming language created in 1986 by Niklaus Wirth and the latest member of the Wirthian family of ALGOL-like languages. Oberon was the result of a concentrated effort to increase the power of Modula-2, the direct successor of Pascal, and simultaneously to reduce its complexity. Its principal new feature is the concept of type extension of record types: It permits the construction of new data types on the basis of existing ones and to relate them, deviating from the dogma of strictly static data typing. Type extension is Wirth's way of inheritance reflecting the viewpoint of the parent site. Oberon was developed as part of the implementation of the Oberon operating system at ETH Zurich in Switzerland. The name is from the moon of Uranus, Oberon.

Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by ML in 1973, permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplication. Such software entities are known as generics in Ada, C#, Delphi, Eiffel, F#, Java, Rust, Swift, TypeScript and Visual Basic .NET. They are known as parametric polymorphism in ML, Scala, Haskell and Julia; templates in C++ and D; and parameterized types in the influential 1994 book Design Patterns.

GRASS GIS free, open source geographical information system

Geographic Resources Analysis Support System is a geographic information system (GIS) software suite used for geospatial data management and analysis, image processing, producing graphics and maps, spatial and temporal modeling, and visualizing. It can handle raster, topological vector, image processing, and graphic data.

The computer programming languages C and Pascal have similar times of origin, influences, and purposes. Both were used to design their own compilers early in their lifetimes. The original Pascal definition appeared in 1969 and a first compiler in 1970. The first version of C appeared in 1972.

IP Pascal is an implementation of the Pascal programming language using the IP portability platform, a multiple machine, operating system and language implementation system.

S-algol is a computer programming language derivative of ALGOL 60 developed at the University of St Andrews in 1979 by Ron Morrison and Tony Davie. The language is a modification of ALGOL to contain orthogonal data types that Morrison created for his PhD thesis. Morrison would go on to become professor at the university and head of the department of computer science. The S-algol language was used for teaching at the university at an undergraduate level until 1999. It was also the language taught for several years in the 1980s at a local school in St. Andrews, Madras College. The computer science text Recursive Descent Compiling describes a recursive descent compiler for S-algol, using S-algol as the implementation language.

EXPRESS (data modeling language)

EXPRESS is a standard data modeling language for product data. EXPRESS is formalized in the ISO Standard for the Exchange of Product model STEP, and standardized as ISO 10303-11.

This comparison of programming languages (array) compares the features of array data structures or matrix processing for over 48 various computer programming languages.

Language support for array types may include certain built-in array data types, some syntactic constructions that the programmer may use to define such types and declare array variables, and special notation for indexing array elements. For example, in the Pascal programming language, the declaration type MyTable = array [1..4,1..2] of integer, defines a new array data type called MyTable. The declaration var A: MyTable then defines a variable A of that type, which is an aggregate of eight elements, each being an integer variable identified by two indices. In the Pascal program, those elements are denoted A[1,1], A[1,2], A[2,1],… A[4,2]. Special array types are often defined by the language's standard libraries.

CityEngine

Esri CityEngine is a three-dimensional (3D) modeling software application developed by Esri R&D Center Zurich and is specialized in the generation of 3D urban environments. With the procedural modeling approach, CityEngine supports the creation of detailed large-scale 3D city models. CityEngine works with architectural object placement and arrangement in the same manner that VUE manages terrain, ecosystems and atmosphere mapping. Unlike the traditional 3D modeling methodology which is using Computer-Aided Design (CAD) tools, CityEngine improves the shape generation via the rule-based system and data sets—similar as the Geographic Information System (GIS). Due to this dominant feature, CityEngine has been broadly used in academic research or building virtual environments, e.g., urban planning, architecture, visualization, game development, entertainment, GIS, archeology, and cultural heritage. After being integrated with the Building Information Model (BIM), CityEngine can visualize the data of buildings in a larger urban context, enhancing its working scenario toward real construction projects.

Seed7 is an extensible general-purpose programming language designed by Thomas Mertes. It is syntactically similar to Pascal and Ada. Along with many other features, it provides an extension mechanism. Seed7 supports introducing new syntax elements and their semantics into the language, and allows new language constructs to be defined and written in Seed7. For example, programmers can introduce syntax and semantics of new statements and user defined operator symbols. The implementation of Seed7 differs significantly from that of languages with hard-coded syntax and semantics.

The crown of a tree consists of the mass of foliage and branches growing outward from the trunk of the tree. The average crown spread is the average horizontal width of the crown, taken from dripline to dripline as one moves around the crown. The dripline being the outer boundary to the area located directly under the outer circumference of the tree branches. When the tree canopy gets wet, any excess water is shed to the ground along this dripline. Some listings will also list the maximum crown spread which represents the greatest width from dripline to dripline across the crown. Other crown measurements that are commonly taken include limb length, crown volume, and foliage density. Canopy mapping surveys the position and size of all of the limbs down to a certain size in the crown of the tree and is commonly used when measuring the overall wood volume of a tree.

Tree volume is one of many parameters that are measured to document the size of individual trees. Tree volume measurements serve a variety of purposes, some economic, some scientific, and some for sporting competitions. Measurements may include just the volume of the trunk, or the volume of the trunk and the branches depending on the detail needed and the sophistication of the measurement methodology.

Trees have a wide variety of sizes and shapes and growth habits. Specimens may grow as individual trunks, multitrunk masses, coppices, clonal colonies, or even more exotic tree complexes. Most champion tree programs focus finding and measuring the largest single-trunk example of each species. There are three basic parameters commonly measured to characterize the size of a single trunk tree: height, girth, and crown spread. Additional details on the methodology of Tree height measurement, Tree girth measurement, Tree crown measurement, and Tree volume measurement are presented in the links herein. A detailed guideline to these basic measurements is provided in The Tree Measuring Guidelines of the Eastern Native Tree Society by Will Blozan.

Smart Pascal is a dialect of the Object Pascal computer language that is derived from Delphi Web Script, but is enhanced and adapted for Smart Mobile Studio, a commercial development suite that generates JavaScript rather than machine code.

<i>Dream Flight</i> 1982 film

Dream Flight is a 3-D computer-animated fiction film completely produced by computer. The film was produced in 1982 at the University of Montreal and directed by Philippe Bergeron, Nadia Magnenat Thalmann and Daniel Thalmann.

PascalABC.NET is a Pascal programming language that implements classic Pascal, most Delphi language features, as well as a number of their own extensions. It is implemented on the .NET Framework platform and contains all the modern language features: classes, operator overloading, interfaces, exception handling, generic classes and routines, garbage collection, lambda expressions, parallel programming tools.

References

  1. N. Magnenat Thalmann, D. Thalmann, Design and Implementation of Abstract Graphical Data Types, Proc. 3rd International Computer Software and Applications Conference (COMPSAC'79), IEEE, Chicago, USA, 1979, pp.519-524
  2. N. Magnenat-Thalmann, D. Thalmann, MIRA-3D: A Three-dimensional Graphical Extension of PASCAL, Software-Practice and Experience, Vol.13, 1983, pp.797-808