**Author: Sanjay Goel, **http://in.linkedin.com/in/sgoel

________________________________________

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 http://www.slideshare.net/goelsan/computer-graphics-2004. 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)**

- CG-IP-CV
- Taxonomy of Images
- 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.
- Assignment: Explore any 3D graphics tool and check its functionality.

**Lecture #3 (20.7.11)**

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

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

- Design the specs of a novel “Painting Experience Authoring System.”
- Importance of iterative thinking in design.
- 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)**

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

**Lecture #8 (17.8.11)**

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

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

- Midpoint Line
- Midpoint Circle
- 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)**

- Anti-aliasing
- Flood-fill
- Run-fill

**Lecture #13 (14.9.11)**

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

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

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

Few more later..

- Operations on above listed data structures
- Relocation
- Area fill
- Union, intersection, subtraction of two regions
- Conversion of DS1 to DS2.

- Assignment: Write programs for the above listed operations on above listed data structures.

**Lecture #16 (21.9.11)**

- 2D Geometric Transformations on above listed data structures (lecture #9)
- Translation
- Reflections
- Scaling
- Rotation

- Assignment: Write programs for the above listed operations on above listed data structures (lecture #9).

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

- More Data Structures for 2D objects

- Relative Chain-code
- Quadtree
- Inside Test (useful for many tasks including collision detection)

- More operations on 2D objects

- Test some properties of 2d linear transformations
- One to one correspondence between points of initial and transformed lines.
- Maintenance of Parallelism

- Rigid body Transformation- Maintain angles and distances
- Rotation and Translation
- Strictly speaking, in Reflection, angles is not preserved,

i. theta –> 2pi – theta

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

**Lecture #19 (28.9.11)**

- More operations on 2D objects

- Tweening –> Morphing

- Extending the data structures of 2D to Data Structures for 3D objects
- Surface points (extension of 2D boundary contours)
- 3D Chain-code (extension of 2D chain codes for 3D curves, codes for 26 directions)
- Set of cuboids
- Surface mesh (extension of 2D contour polygon)

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

- Extending the data structures of 2D to Data Structures for 3D objects

- Point cloud for every object
- Range image
- Voxel-Map
- Octree
- Surface mesh (Polygon mesh)

- Operations on above listed data structures
- Display the object in Color (face coloring)
- 3D Transformations
- Face visibility detection

**Lecture #22 (11.10.11)**

- Polygon Mesh
- Vertex list, edge list, face list

- 3D Transformations
- Translation, rotation, reflection, scaling, shear

- 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)**

- Matrix representation of 3D transformations
- Composite transformations
- Homogenous coordinate system
- Projections:
- Parallel
- Perspective

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

- Window to Viewport Transformation
- Clipping
- Line Clipping
- Cohen Sutherland code

**Lecture #27 (2.11.11)**

- Polygon Clipping
- Sutherland Hodgeman Algorithms
- Weiler Atherton Algorithms
- Splitting Concave Polygon

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

- Back Face removal
- Painter’s algorithm
- Z-Buffer algorithm

**Lecture #30 (9.11.11)**

- Colour computation – Shading models

**Lecture #31-32 2 hrs (15.11.11)**

- Adapting Painter’s algorithm for Octree

- Landscapes (back line removals)
- Extruding Surfaces including Quadstrip
- Surfaces of Revolution including Superquadrics
- Assignment: Write programs for generating superquadric surfaces.

**Lecture #33 (16.11.11)**

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

**Lecture #34-35 2 hrs. (22.11.11)**

- Limitations of Z Buffer Algorithm
- Ray casting, Ray-tracing
- 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)**

- Fractals
- Procedural modeling of nature
- Fractal dimension

i. Mathematical model

ii. Physical interpretation

- Mandelbrot set, Julia set
- Newton’s methods of finding roots
- Landscape, cloud modeling

i. Midpoint displacement algorithm with roughness control

- Assignment: Write program for Mandelbrot and Julia sets

Write programs for landscape creation

*Uncategorized*

Posted on February 10, 20120