For the summer term I took Computer Graphic Systems I (CAP 5722) at UCF. I had been interested in computer graphics since the early 70’s when I worked at the University. I had done considerable studying on my own since then and did the graphics contract for Harris, but this was my first formal course on the subject. Much of the course covered the fundamentals of computer graphics which I was familiar with but there was new things I learned from the course. Since this was a computer course, we had to write several small programs for the class to do some specific graphic task and I coded these all in the C programming language. For the final project for the class we had to right a much larger program that did a number of graphical functions. This was a chance for me to really shine.
At the time was there little computer graphics software available and what software there was was usually provided vendors of computer graphics hardware and, although providing generally the same functionality, was specific to the vendor’s system. I had recognized this back in ’75 while working at the University, the Tektronix display which used one set of commands, the Calcomp plotter another, and the electrostatic plotter yet another, but they had the same basic functions but you had to write different code for each one.
My GKS Book
As a proposed solution to this, in February of 1984 the ACM SIGGRAPH group published a special issue on the Graphics Kernal System (GKS) which also became an American National Standard. ACM described GKS in the ACM special GKS issue:
The Graphical Kernal System (GKS) is a set of basic functions for computer graphics programming useable by many graphics producing applications. This standard:
- Allows graphic application programs to be easily transported between installations.
- Aids graphic application programmers in understanding and using graphics methods
- Guides device manufacturers on useful graphic capabilities
I thought GKS had great potential, the only problem was GKS was just a specification, the only actual implementation was for the FORTRAN 77 computer language, and I had enough of that language while working on the Harris SDHS project. By this time I had been programming in the C programming language for some time, initially for class projects for courses I was taking but I also had worked on a few projects for NCR using C and I really liked it. The freedom, syntax, capabilities of C was the best of the dozen languages I had programmed so I decided to write a C implementation of the GKS system.
My GKS Lab Book
GKS is a sophisticated graphic system, it had the expected functions like drawing lines, but had much more, areas, text, cells, transformations, segments, workspace, viewports and so on. Many dozens of functions with equally as many attributes, it would not be easy, but I was determined so I started coding. I was quite serious about it, I kept track of my design and progress in a lab book in which I recorded each day’s work.
Page from GKS lab book about character generation
By the time I took the Computer Graphics course at UCF I had 50-60% of the specification implemented so when the professor announced the final course project, I approached him after class and about using my GKS system for the project. The professor agreed and I turned in what I had written for the final project. The professor was quite impressed and I received an A for the course.
One thing I learned about from the course was the use of mathematical matrices to transform graphic images to do such things as move, rotate and resize images. I had read about matrices in my own studies of computer graphics, but never really understood how it worked so the computer graphics course gave me new insight of how useful they were and so for the fall term at UCF I took the math course MAS 3113 – Matrices which I found to be more difficult than I thought but managed to make a B in the course.
I continued to work on my GKS software for the next three years but finally gave it up. Unfortunately none of my code survived the many different media changes over the years.
Updated: 08-06-2023