This paper deals with the domains in Computer Science which are strongly related to Computer Graphics. An attempt is made at selecting topics which should influence the future of Computer Graphics, in order to bring out a larger set of proposals for recommendations.
Computer Graphics is a fast changing concept.
Initially, the concept meant use of a CRT as a computer terminal to produce line drawings, its scope has widened, however, and now includes graphical input, the production of half-tone images and computer animation.
We shall define Computer Graphics as that part of Computer Science which deals with data manipulation in order to produce graphics (real or virtual, 2 or 3 dimensions) , perhaps by means of interactive man-machine communication. Computer Graphics involves the use of numerous techniques, hardware and software, some well known, some still research topics.
Computer Graphics appear in nearly every field where computers are used. Let us mention:
It can be noted that:
An attempt is made to classify graphical requirements independently from application areas, corresponding to the functions which should be available. This attempt should clarify ideas about and lead to the emergence of prominent points for future developments and research in Computer Graphics.
Graphics as the result of computations, are commonly presented as:
Computer animation is the production of sequences of pictures with time constraints. We find the same characteristics as in 1.2.1., plus picture dynamics:
Computer animation will become a very important field of application; and so major efforts have to be made in this direction, starting with understanding what tools are needed.
We consider here applications where the picture is a support for man-machine communication. The picture is then a suitable representation of the data to be handled and processed, as for instance in Computer Aided Design or Computer Aided Instruction.
Apart from characteristics of 1.2.1., it is necessary to add:
This last point requires further investigation.
We try to show here the main problems in graphics to which the user will have to pay attention when implementing application programs. The different points involving software and hardware will be discussed in the next chapters.
These different points will be studied in the next chapters.
A graphical communication system may be divided into four components:
The drawing device is the physical means which permits display of a picture. Different technologies are in use or may be developed, leading to devices whose performances are difficult to compare. However, some criteria can be used:
The choice of a drawing device for a given application implies a trade-off between mainly incompatible characteristics. A careful investigation of the adequacy of drawing devices to different domains of application should be very useful and will point to deficiencies in the present technology: the combination of characteristics needed for some applications cannot be obtained, or if obtained at all, not at a reasonable cost (for example, large size frames plus instant regeneration).
The graphic processor is the device which decodes and executes instructions, in order to produce a picture using the drawing device. Fundamental characteristics are:
Generally, three kinds of instructions are found:
Important work should be done to define standard sets of instructions. Some guidelines could be:
A graphic processor consists of different components (generators, decoders, digital-analog converters, etc...) which are linked together. The problem of the relationships between components is the same as in computer architecture, with no specific complexity. However, it is very important to discuss the impact of new trends in computer hardware such as the use of microprocessors, and to investigate the possible modular structure of graphic processors.
The location of the display file has a strong influence on the performance of a graphic system:
Crucial points are:
A graphic device can be used:
The last configuration seems to be the most promising: it is already widely used and is almost standard for graphic devices connected to a computer network. Two points are of interest:
A graphical application's program can be used more or less interactively, and with or without graphical input (drawings, etc.). We only want to consider facilities which make graphical input and interaction possible or easier. Two types of devices are needed:
The ergonomics of input devices and of complex terminals {several input devices plus display and processor) should be carefully studied. From the hardware point of view, significant progress will be made with devices designed to collect 3-dimensional information, probably using image processing techniques, or dynamic graphical data (digital high-speed camera).
The use of these facilities leads to different types of graphic systems.
The influence of display characteristics on interaction capabilities should be noticed, as, for instance, the effect of picture regeneration or modification speed on response time. In fact, the main part of this response time is frequently the calculation time used by a program, so that the performance of interactive facilities must be carefully chosen according to the type of application.
Finally, there should be some investigation into the response time acceptable to the user, depending on his reasonable wishes and on the apparent complexity of the task performed or the benefits from it.
Three kinds of people are concerned with graphic software
This division may appear in some cases rather artificial, but we think it is a good starting point to study graphic software problems. We shall begin here again with the user's point of view and finish with the system designer, whose task is to satisfy the previous ones.
A graphical application program is a program using graphic hardware. When running such a program, information is handled by means of graphical communication. The dialogue with the computer is achieved by using a set of commands, which are performed through communication devices. Programs are mostly to be used by people who are not computer scientists, so technical problems must be as transparent as possible. Problems linked to that point of view could be:
When specifying and writing an application program, the programmer will have to define the functional specifications of his program, taking into account the points developed in Sec. 3.1., then he will implement it using some programming language. We define a graphic language as any set of graphic programming facilities (set of subroutines, specific language...) offered to the application programmer to write programs.
Under this ambitious word, we will only try to define those functions which should be offered in a graphic language. Some of these, usually low level functions, can be directly realized by the graphic processor, so that we find here the same problems as in Sec. 2.2.1. We will not discuss them again.
A graphic language is usually composed of interactive graphic primitives and of tools to combine them into more complex graphic functions. The set of possible primitives is nearly unlimited; it depends on the specific facilities offered by each graphic terminal.
Nevertheless, there should be some basic and standard set of primitives available on each graphic system and rules to create and use new primitives. Among these rules there should be a precise way of defining the semantics of a given primitive, which could be done, for instance, using only the basic set of primitives. A careful study should be made as to whether such a universal set exists. If it does, it would ensure the portability of programs as any primitive non-realizable by hardware on a certain configuration would then be realizable by software. This implies of course the portability of the non-graphic part of the program. Also the set of primitives should be independent of the programming language for obvious practical reasons. On the other hand, the facilities offered to combine them (possibilities to define procedures, functions, subroutines, for instance) are by nature dependent upon the programming language.
These facilities concur to what can be called the extensibility of the graphic language. The object is indeed to extend the possibilities of a given set of primitives, by combining them with other graphic primitives and with functions offered by the programming language (association of a data base with drawings for instance). There are two problems:
There are two types of problems to be considered here, the syntax of graphic functions or primitives, and the influence of the syntax of the programming languages.
The syntax of the graphic primitives should be as simple as possible in order that it maps easily onto most programming languages.
The second problem is whether the same set of primitives can be utilized with different programming languages such as FORTRAN, LISP, APL, BASIC, Assembly languages, PL1, etc. A complete compatibility does not seem possible, but we can hope that for most programming languages, we will only need to make minor changes in the formal presentation of the primitives.
These syntactic problems are mainly conditioned by the implementation and compilation techniques in use:
These considerations could lead to the definition of standards adapted to classes of programming languages.
The problems here are both practical and theoretical; neither aspect seems to have been touched so far.
First, the theory of graphical programming. There has been much effort recently on programming theory. It should be possible to find similar results for graphical and interactive programming, mainly in the fields of:
Such results condition the practical aspects of graphical programming, the art of graphical programming and programming facilities. For the first point, we should look for rules similar, for example, to the rules of structured programming, which would make programs easily understandable and would facilitate documentation, proof and modification.
Programming facilities consist mainly of documentation, testing and debugging facilities which are presently lacking. Graphical and interactive programming is one of the most promising research fields in Computer Graphics and should condition largely its future developments.
We treat algorithms separately from application programs and graphic systems as it is clear that graphics needs an enormous amount of specific algorithms which are mostly independent from application programs and systems. A great effort has to be made to develop them.
We need algorithms in all the fields considered in this paper: geometric drawings, cartography, graphs, mechanical drafting, 3-D presentations, real time, animation, and so on... We must add some non-graphic algorithms which are frequently necessary, like mathematics for graphics (interpolation and smoothing techniques, surface representation...).
These algorithms should be device independent, but we cannot skip the fact that in some cases, the use of particular features of a given class of devices can lead to much more efficient algorithms, as for instance with hidden-line elimination (Loutrel versus Watkins or Newell-Sancha).
The theoretical foundations of graphic information strongly influence the syntax and semantics of graphic languages. How can a picture be described and structured? We should investigate the possibilities of grammars, for both images and drawings. The classical tree structure of pictures is not appropriate to many cases. A good understanding of these theoretical problems should lead to simple definitions of pictures and to the possibility of quick local modifications.
The most promising research field should be the use of artificial intelligence techniques for graphical input and interaction:
It is clear that Computer Graphics involve nearly all Computer Science techniques. If our purpose is the definition of some kind of graphics standards, then we must pay attention not to overlap fields investigated for their own sake, and so to make a clear distinction between typical graphic and general computer science problems.
Our guide-line has been here to isolate what we think are the fundamentals of graphics from all detail and technological points, and from these fundamentals to try to imagine what might be Computer Graphics. This is a very difficult and dangerous task, and this paper will certainly look very conventional for such an ambitious purpose. But we think it is very important to make a large and constant effort in that direction; only under that condition can we get a clear understanding of Computer Graphics developments.
We should concentrate on (a).