00106501: Computer
Graphics
(Spring-Summer
2012-2013)
Graphics&Geometric Computing Laboratory
School of Mathematical Sciences
University of Science and Technology of China
Announcements General
Course Goals
Texts
Grading
Syllabus
Assignments
Requirements on Assignments
Professional Conduct
Miscellaneous
Announcements
-
June 4: 课程期末考试时间为2013年6月9日晚7:00-9:00,地点:5104
-
June 4: 今天上课的课件已挂出Syllabus
-
May 28: 今天上课的课件已挂出Syllabus
-
May 21: 今天上课的课件已挂出Syllabus
-
May 14:
布置课程第四次作业Homework#4,
deadline is 10:00a.m., Monday, May 27, 2013
-
May 14: 今天上课的课件已挂出Syllabus
-
May 10: 今天上课的课件已挂出Syllabus
-
Apr.
28: 布置课程第三次作业Homework#3,
deadline is 10:00a.m., Thursday, May 9, 2013
-
Apr. 28: 今天上课的课件已挂出Syllabus
-
Apr. 23:
由于“五一”假期调休,本周日4月28日下午需要上课2:00-4:25 (上周二的课)
-
Apr. 23: 今天上课的课件已挂出Syllabus
-
Apr. 20:
工程作业(Project1)的作业上传文件命名方式见作业上传FTP说明
-
Apr. 19: 今天上课的课件已挂出Syllabus
-
Apr. 16: 今天上课的课件已挂出Syllabus
-
Apr. 11: 布置课程第一次项目作业Project#1,
deadline is
10:00a.m., Monday,
April 22, 2013
-
Apr. 9: 今天上课的课件已挂出Syllabus
-
Mar. 29: MFC环境下的OpenGL编程说明文档已挂出,见Syllabus
-
Mar. 26:
作业FTP已开通,Homework#2(bonus)上传至目录\homework-2(bonus)子目录中(作业上传FTP说明),deadline
is 12:00, Monday, Apr. 1, 2013
-
Mar. 26: 课堂上讲解的GLut简单程序及说明
-
Mar. 26: 今天上课的课件已挂出Syllabus
-
Mar. 22:
作业FTP已开通,Homework#2上传至目录\homework-2子目录中(作业上传FTP说明),deadline
is 22:00, Monday, Mar. 25, 2013
-
Mar. 15: 今天上课的课件已挂出Syllabus
-
Mar.
12: 布置课程第二次作业Homework#2,
deadline is 22:00, Monday, Mar. 25, 2013
-
Mar. 12: 今天上课的课件已挂出Syllabus
-
Mar. 12:
学生名单及ID号已更新,今后不再变化
-
Mar. 5: 布置课程第一次作业Homework#1, deadline is 22:00, Monday, Mar. 11,
2013
-
Mar.
5: FTP访问的乱码问题已解决,若访问FTP仍有乱码请告知
-
Mar. 5: C++编程的练习方法已通过email发给了同学们
-
Mar. 5: 今天上课的课件已挂出Syllabus
-
Mar. 5:
用Console写C语言程序的示范。课堂上讲解的“抽象的数组”(代码)
-
Mar. 5: 更新了学生名单及ID号
-
Mar. 1:
今天上课的课件已挂出Syllabus
-
Mar. 1: 课程中的视频材料可从FTP中的“/share/_课件/CG01的视频文件”中下载
-
Feb. 26:
学生名单及ID号
-
Feb. 26:
作业上传FTP说明
-
Feb. 22: 课程主页开通
General
Course Goals
The course of Computer Graphics is a
study of the hardware and software principles of interactive raster graphics.
Topics include an introduction to the basic concepts, 2-D and 3-D modeling and
transformations, viewing transformations, projections, rendering techniques,
graphical software packages and graphics systems. Students will use a standard
computer graphics API to reinforce concepts and study fundamental computer
graphics algorithms.
The goals of this course are to provide a broad exposure to the computer
graphics field in order to be prepared for follow-on study and to help students
learn the state-of-the-art in the field of computer graphics.
Texts
参考教材:
E. Angel, Interactive Computer Graphics — A top-down approach using OpenGL™, 6th
ed., 2011. (国内有影印版)
(中文翻译版:交互式计算机图形学—基于OpenGL的自顶向下方法(第五版),电子工业出版社,2012)
see more in: Dr.
Weihua Tong's course page
Readings:
Various
journal, conference, or WWW materials as appropriate.
注:本课程的部分课件参考了童伟华老师2012年的《计算机图形学课程》,在此表示感谢!
Grading
Credit toward the semester grade will
be allocated to each of the components as indicated in the following table.
Assignments |
40% |
Projects |
20% |
Final Exam |
40% |
Note: Final examination will be
in-class, closed-book. More information will be provided prior to it.
Syllabus
Note: Here you can view or
download the notes that we use in class. DO NOT depend solely on these notes as
many details are missing. You should read the textbook and take notes in class.
Course 01_课程介绍
Course 02_图形显示与光栅化
Course 03_数字图像简介
Course_04_三角网格
Course_05_OpenGL (MFC+OpenGL编程起步说明文档,代码)
Course_06_变换
Course_07_四元数与三维旋转 (Siggraph courses)
Course_08_三维视图
Course_09_曲线曲面的参数表达
Course_10_裁剪和消隐
Course_11_明暗着色
Course_12_重心坐标
Course_13_光线跟踪算法与辐射度算法
Course_14_纹理映射
Course_15_曲面参数化
Course_16_Siggraph介绍
Course_17_形状变形
Course_18_Delaunay三角化和网格生成
Course_19_Procrustes分析
Course_20_Hierarchy
Course_21_Animation
Course_22_Fractals
Summary on the course
Assignments
Homework
-
Homework#1, deadline is 22:00, Monday, Mar. 11,
2013
-
Homework#2, deadline is
22:00,
Monday, Mar. 25, 2013
-
Homework#2(bonus), deadline is
12:00, Monday, Apr. 1, 2013
-
Homework#3,
deadline is 10:00a.m., Thursday, May 9, 2013
-
Homework#4,
deadline is 10:00a.m., Monday, May 27, 2013
Projects
-
Project#1,
deadline is
10:00a.m.,
Monday, April 22, 2013
Note: Please zip your submission stuffs
of the assignment into one single file either using WinZip or WinRAR. Name the
file name as "ID_Name_Homework1.zip" or "ID_Name_Project1" where ID is your
unique ID number in the class.
Requirements on Assignments
Requirements
- All students are expected to study
the relevant portions of the textbook and handouts in conjunction with our
class discussions (i.e., before coming to class). Explicit reading
assignments will not always be given.
- All programming for this course
will be done in C++ according to
the standard coding styles. We will compile and test programs on MS Visual C++
Version 6.0 or MS Visual Studio 2008+ under Windows XP (or Windows 7). It is the responsibility of the student to
submit a program that will successfully compile and execute on the specified
platform.
Assignment Submission
- All students are expected to
complete their homework assignments by their due dates.
-
Submission stuffs
Your ID number, your name, the
assignment number or name, source codes, related document
- Grading of programming assignments
will be based on the following criteria:
1. Correctness of program.
2. Output from program that adequately demonstrates correctness.
3. Documentation, internal and external, included as standards.
4. Efficient use of algorithms and appropriate data structures.
5. Stress - program must function correctly under all and/or extreme and
unusual combinations of input.
6. Creativity - credit for innovation in interface, implementation, style,
etc.
- Submission approach
Please submit your assignment stuffs via my FTP not via email.
- Late Work
No late work will be accepted. If you know you will miss a test due to an
excused absence, you must contact me ahead of time to schedule a make-up
session.
- Late programming assignments
follow the following rules:
25% deduction for 1-day late
50% deduction for 2-day late
Not accepted after being 2-day late
Regarding your marks, contact the grading TA within two weeks after the
assignment is handed back. After this two-week period, your assignment stays
as it is graded.
What constitutes Creativity ?
Creativity is any substantial improvement beyond the basic solution - it can be
applied to any part of the project. For example, the following are relevant in
most cases :
- User Interaction
̶
It would be nice to present the user
with options to either test the program using internal tests or an
interactive interface
̶
Work around limitations in the
program. For example, if the program asks for lines of input and quits when
it sees "X", invent a special syntax (called an escape sequence) to allow
the user to type in "X" without the program exiting. Hypothetically, if the
user enters $X the program interprets it as X, if the user enters $$ the
program interprets it as $ and if the user enters X the program exits.
- Visualization
̶
A representation of how data is
actually being stored in the data structure, by specific position and value
(this would even help greatly with debugging) - this could be accomplished
with specialized data access routines for output formatting
- Testing
̶
Simulating real-world conditions for
input by making some assumptions about the distribution of operations
performed and the rate of operations, then simulating using random number
generators
̶
Intensively testing creation, usage
and destruction of the data structure to prove there are no memory leaks
̶
Exhaustive automatic testing - go
through many (or every) possible scenarios for the data structure (up to
some time limit). For example, assign "add" and "remove" to a binary
variable - then generate all possible strings of operations - test the
structure for each case, and test the results automatically in your main
program to make sure they are what was expected.
̶
Develop a syntax for file-based
testing and use this as an option - eg. "enter X" and "retrieve"
- Efficiency
̶
Minimize the number of allocations of
memory blocks by reusing deleted blocks
Ask yourself these questions ...
̶
How can I make the interface more
natural ?
̶
How can I make the program run faster
?
̶
How can I use less memory/disk space ?
̶
Have I thoroughly tested my program ?
Will my program survive real-world tests ? Will my program survive
worst-case scenario tests ?
Professional Conduct
As a
student in our class, you are expected to conduct yourself in a professional
manner.
Limited Collaboration Policy.
Unless otherwise indicated, any homework assignment or programming exercise
given in this class will be an individual assignment. The work you submit is to
reflect the knowledge, understanding, and skill that you have attained as an
individual. However, the instructor does want to encourage the development of a
community of scholars who are actively engaged in discussion of the ideas
related to this course. With this in mind, you are allowed to discuss solutions
of the homework and programming problems with other students if done so
according to the following guidelines:
- You
may discuss ideas for homework and programming assignments with your
classmates. However, you cannot collaborate on writing the solution or the
program code. That is, you can talk about the problems and ideas for solving
them, but you cannot write things down with anyone else. You are, of course,
prohibited from copying or seeing another student's written solution, and
you are not allowed to show your work to anyone else.
- You
should accept help with care. If you work too closely with another student,
you might mislead yourself into believing that you understand the concepts
and techniques better than you actually do. Don't forget that the instructor
has office hours and can probably give you hints or suggestions to get you
started.
- You
should give help with care. Do not help anyone too much. When you have
solved a problem, it is tempting to just tell other students how you solved
it. Instead, try to allow them to come to the solution on their own. Maybe
give them a hint to help them get "over a hump." Remember that helping
someone too much will hurt them in the long term if they can't work through
problems on the exams by themselves. So avoid the temptation to do so. If
you can't help other students without giving away the whole solution, direct
them to see the instructor (who may or may not have a way to "edge" them
toward the solution).
- You
are not obligated to help anyone. If you feel uncomfortable helping another
student for any reason, please direct them to see the instructor.
Miscellaneous
Online C++ and coding resources
OpenGL
-
www.opengl.org
-
Google Web Directory for OpenGL
- OpenGL Super Bible (Second
Edition), by Richard S. Wright, Jr. and Michael Sweet, Wait Group
Press.
- OpenGL, A Primer , by
Edward Angel, Addison Wesley.
- OpenGL, Reference Manual
(Third Edition), by Dave Schreiner, Addison Wesley.
- OpenGL, Programming Guide
(Third Edition), by Dave Schreiner, etal., Addison Wesley.
-
OpenGL.org's book list
Send any comments or
suggestions to Prof. Dr. Ligang Liu,
lgliu@ustc.edu.cn
Copyright © 2013, Ligang Liu