My Courses – I: An Overview of Computer Graphics Course (July-December 2011)

Posted on February 10, 2012


Author:  Sanjay Goel,


I taught Computer Graphics for several years at DIT (now NSIT).  Probably at DIT, our Computer Graphics lab was the best undergraduate computer graphics  lab in India during later 80’s to  mid 90’s. I can not fail to  recall the great vision and support of Prof. BN Mishra, Director, DIT.  He very enthusiastically supported the area and  our lobaoratory.   A larger number of  very competent students of DIT did wonderful work in this area.  Their work was exhibited at first MAIT exhibition and also in the annual international tradefair both at Pragati Maidan.  Unfortunately, at that time in India, there were hardly any industrial opportunities  in Computer Graphics software development.    Several  IT  lumaniraies of today (both in Silicon Vallley and also in India) like Devesh Bhatanagar (Head, Landis+Gyr), Praveen Jain (VP, CISCO), Rahul Sharma (Senior Director, Microsoft), Rajiv Sikka (Sr. VP, Polaris), Pushkar Kapasi (Director, Oracle) Dr. Sumantra Dutta Roy (IIT Delhi),  Atul Sikka (Director, Aricent)  and many others showed their future potential  in that lab.  

 I left full time teaching at DIT in 1995 to join a UNDP funded Multimedia project at IGNCA.  After completing the project I re- joined full time teaching at JIIT  in 2002.  During this period I taught Computer graphics few times at three places -Delhi college of Engineering, NSIT, and also  University of Delhi.   

At JIIT, I taught computer graphics   during  Jan-June, 2004 as a compulsory course to 3rd year BTech students.   The lecture notes of 2004 are available at   Same year, I was also given the responsibility of department’s HoD and  many other colleagues showed interest in teaching this course during 2004-2009.  I decided to diversify myself and  started developing some new interdisciplinary courses for some years.   

I once again taught Computer Graphics   as an elective to final year BTech students after a long gap  during July to December 2010. My dream of sending some students to top graphics companies was realised in 2011.  Four JIIT students of 2011 graduation batch were picked by Dreamworks.   I was motivated to teach the course once again as an elective to final year BTech students  in 2011.  Around 20 students chose to   register in this course.  The class sessions were responsive.   I must say that on an average, this batch of students was more motivated and  performed better than some of their immediate senior batches.     After a gap of few semester, I even awarded an A+ to one student, Ankur Agrawal.  Most motivated student was Sarrika, an ECE student,  who most regularly attended the full course without registering. I sincerely hope that at least few of these students get the opportunity to work for companies like Dreamworks.   The uninteresting part was that this semester had too many breaks.   I am hereby giving a lecture wise summarised account of topics discussed in the classes.  

Lecture #1-2 (2 hrs.) (19.7.11)

  1. CG-IP-CV
  2. Taxonomy of Images
  3. Assignment: Visit NGMA to see the paintings and identify the limitations of current display technology wrt   that experience. Spend a lot of time with your chosen paintings.
  4. Assignment: Explore any 3D graphics tool and check its functionality.

Lecture #3 (20.7.11)

  1. List the functionalities of 3D graphics tools.
  2. Assignment: Write recursive programs for fractal circle and other such examples.

Lecture #4-5 (2 hrs.) (2.8.11)

  1. Design the specs of a novel “Painting Experience Authoring System.”
  2. Importance of iterative thinking in design.
  3. Assignment: Choose a professional domain that involves graphics creation.  Propose the specs of a computer graphics system for this domain.

Lecture #6-7 (2 hrs.) (16.8.11)

  1. Sources of Stimulus for Design iterations- Observation, interaction, participation, imagination
  2. Line drawing (DDA).
  3. Self study:  Bresenham’s algorithm
  4. Assignment: Implement Circle fractal using iterative approach.

Lecture #8  (17.8.11)

  1. Recursive circle: various combinations, recursion-less logic
  2. Circle DDA Algorithm.

Lecture #9-10 (2 hrs.) (23.8.11)

  1. Midpoint Line
  2. Midpoint Circle
  3. Mini Project:  Further Improvise on your assignment of Lecture #3.  Create a new tool.

T1(Open book and Open Notes):  

Max marks: 12/15; Average marks:  6.55/15; Minimum marks: 1.

Lecture #11-12 (2 hrs.) (13.9.11)

  1. Anti-aliasing
  2. Flood-fill
  3. Run-fill

Lecture #13   (14.9.11)

  1. Polygon fill
  2. Pattern fill (Tiling)
  3. Assignment: Think about Data structures for 2D bounded regions 

Lecture #14-15  (2 hrs.)  (20.9.11)

  1. Data structures for 2D bounded regions 
    1. Point cloud for every region
    2. Bitmap
    3. Boundary Contour (sequenced storage of all boundary points)
    4. Boundary Contour’s Chain code and variants
    5. Boundary Contour’s Polygonal approximation
    6. Shape Table/Shape Data structure (List of Y-spans of X-spans) and variants – (Rectangularisation)

Few more later..

  1. Operations on above listed  data structures
    1. Relocation
    2. Area fill
    3. Union, intersection, subtraction of two regions
    4. Conversion of DS1 to DS2.
  2. Assignment:  Write programs for the above listed operations on above listed data structures.

Lecture #16  (21.9.11)

  1. 2D Geometric Transformations  on above listed  data structures (lecture #9)
    1. Translation
    2. Reflections
    3. Scaling
    4. Rotation
  2. Assignment:  Write programs for the above listed operations on above listed data structures (lecture #9).

Lecture #17-18  (2 hrs.)  (27.9.11)

  1. More Data Structures for 2D objects
  1. Relative Chain-code
  2. Quadtree
  3. Inside Test (useful for many tasks including collision detection)
  1. More operations on 2D objects 
  1. Test some  properties of 2d linear transformations
    1. One to one correspondence between points of initial and transformed lines.
    2. Maintenance of Parallelism
  2. Rigid body Transformation- Maintain angles and distances
    1. Rotation and Translation
    2. Strictly speaking, in Reflection, angles is not preserved, 

                                                              i.      theta –> 2pi – theta

  1. Affine Transformations- Parallel lines remain parallel
    1. Rotation, Translation, Scaling, Shear, Reflection

Lecture #19  (28.9.11)

  1. More operations on 2D objects
  1. Tweening –> Morphing
  1. Extending the data structures of 2D to Data Structures for 3D objects
    1. Surface points (extension of 2D boundary contours)
    2. 3D Chain-code (extension of 2D chain codes for 3D curves, codes for 26 directions)
    3. Set of cuboids
    4. Surface mesh  (extension of 2D contour polygon)

Lecture #20-21  (2 hrs.) (10.10.11)

  1. Extending the data structures of 2D to Data Structures for 3D objects
  1. Point cloud for every object
  2. Range image
  3. Voxel-Map
  4. Octree
  5. Surface mesh (Polygon mesh) 
  1. Operations on above listed  data structures
    1. Display the object in Color (face coloring)
    2. 3D Transformations
    3. Face visibility detection

Lecture #22  (11.10.11)

  1. Polygon Mesh
    • Vertex list, edge list, face list
  2. 3D Transformations
    • Translation, rotation, reflection, scaling, shear
  3. Assignment:   Study the file formats of 3d modeling.

T2 (Open book and Open Notes):   Max marks: 22/25; Average marks: 12.13; Minimum marks:  3.

Lecture #23-24  (2 hrs.) (25.10.11)

  1. Matrix representation of 3D transformations
    1. Composite transformations
    2. Homogenous coordinate system
    3. Projections:
      1. Parallel
      2. Perspective

Lecture #25-26 (2 hrs.) (1.11.11)

  1. Window to Viewport Transformation
  2. Clipping
    1. Line Clipping
    2. Cohen Sutherland code

Lecture #27 (2.11.11)

  1. Polygon Clipping
    1. Sutherland Hodgeman Algorithms
    2. Weiler Atherton Algorithms
    3. Splitting Concave Polygon

Lecture #28-29 (2 hrs.) (8.11.11)

  1. Back Face removal
  2. Painter’s algorithm
  3. Z-Buffer algorithm

Lecture #30 (9.11.11)

  1. Colour computation – Shading models

Lecture #31-32 2 hrs (15.11.11)

  1. Adapting Painter’s algorithm for Octree
  1. Landscapes (back line removals)
  2. Extruding Surfaces including Quadstrip
  3. Surfaces of Revolution including Superquadrics
  4. Assignment:  Write programs for generating superquadric surfaces.

Lecture #33  (16.11.11)

  1. Texture:  Bump Mapping
  2. Superquadrics
  3. Ruled Surface, Bilinear Patch, Coons patch,
  4. Assignment:  Write program for generating and rendering Rules surfaces.
  5. Assignment:   Write program to read a 3DS file and display the objects from continuously changing viewpoints.

Lecture #34-35 2 hrs. (22.11.11)

  1. Limitations of Z Buffer Algorithm
  2. Ray casting, Ray-tracing
  3. Assignment:   Use OpenGL’s Ray-tracing option to render a scene.

                       Write your own program for Ray-tracing. 

Lecture #36-37  2 hrs. (23.11.11)

  1. Fractals
    1. Procedural modeling of nature
    2. Fractal dimension

                                                              i.      Mathematical model

                                                            ii.      Physical interpretation

    1. Mandelbrot set, Julia set
    2. Newton’s methods of finding roots
    3. Landscape, cloud modeling

                                                              i.      Midpoint displacement algorithm with roughness control

  1. Assignment:   Write program for Mandelbrot and Julia sets

                                   Write programs for landscape creation

Posted in: Uncategorized