- 1 Practical Seminars on Computer Graphics 1 (Winter 2011)
- 1.1 Homeworks
- 1.2 Project
- 1.3 Summary
- 1.4 Seminars
- 1.4.1 Exercise01 [20/21.9] "Introduction"
- 1.4.2 Exercise02 [27/28.9] "Vectors and Matrices"
- 1.4.3 Exercise03 [04/05.10] "Transformations 1"
- 1.4.4 Exercise04 [11/12.10] "Transformations 2" (Onderik)
- 1.4.5 Exercise05 [18/19.10] "Projection" (Hudak)
- 1.4.6 Exercise06 [25/26.10] "Rasterization of Line" (Onderik)
- 1.4.7 [1/2.11] - No Exercise
- 1.4.8 Exercise07 [8/9.11] "Rasterization of Circle and Ellipse" (Hudak)
- 1.4.9 Exercise08 [15/16.11] "Scanline of Polygon" (Onderik)
- 1.4.10 Exercise09 [22/23.11] "Flood Fill" (Hudak)
- 1.4.11 Exercise10 [29/30.11] "Clipping 1" (Onderik)
- 1.4.12 Exercise11 [06/07.12] "Clipping 2" (Hudak)
- 1.4.13 Exercise12 [13/14.12] "Visibility" (Onderik)
Practical Seminars on Computer Graphics 1 (Winter 2011)
- On every seminar we will implement selected problems/algorithms from lessons. We will usually start with a prearranged template downloadable from with site.
- As a programming language we will use C#. We will use Visual C# 2010 Express as development environment. Alternatively you can use MonoDevelop (Linux / Mac OSX) on your own machine.
- Your code should be well formatted and commented. Titles of functions, classes, variables should be representative for their purpose.
- Every week you have to finish and submit the assignment as homework.
- At the end of the semester you have to submit the project.
- Any kind of cheating is punished by withholding 15 points for all involved students. Situation where only part of code is shared is also considered cheating!
- Attendance at seminars is optional but recommended. Your activity during seminar can be awarded with max 5 bonus points during the semester.
- Seminars are conducted by
- Matej Hudak (firstname.lastname@example.org)
- Juraj Onderik (email@example.com)
- Schedule of seminars is
- Tue (8:10) - Room H6
- Tue (18:10 - Room H3
- Wed (18:10) - Room F248
- As a homework, you will program what we could not finish during exercise. Assignment and template will be downloadable from this site. See exercises.
- Homework must be submitted by email to firstname.lastname@example.org every week until next monday 23:59.
- Your submission email must have title in form 'ExNN' where NN is the number of exercise, eg. Ex05.
- You can get max 3 points per homework, totally 33 points. Late submission is for 0 points.
- It is required to submit zipped source code of your homework. Do not send executable files. Homework without source code is for 0 points!
- Project must be submitted by email to email@example.com until 15.1.2011.
- You can get max 12 points for your project.
- It is required to submit source code of your project. Executable files are optional. Projects without source code is for 0 points!
- Project assignment
- Submission: firstname.lastname@example.org
- Homeworks: +33 points (11x3) /deadline monday 23:59/ /email title: ExNN/
- Project: +12 points /deadline 15.1.2011/
- Cheating: -15 points
- Minimum: +20 points /total: 45 points/
- Attendance: Optional
- YOUR EVALUATION ! (we add points continuously)
Exercise01 [20/21.9] "Introduction"
- There are no points for this seminar.
- csharp tutorials
- visual c# tutorials
- Visual Studio Tips
- F2: Rename object/class/property/field...
- F5: Build and debug solution
- Shift + F5: Stop debugging solution
- F9: Add/Remove break-point at current line
- F12: Navigate to definition/declaration of object/class...
- CTRL + Space: List members of object/class after "." or parameters of method after "("
Exercise02 [27/28.9] "Vectors and Matrices"
- Introduction to C#
- classes: Vector3, Matrix33
- Add(V3, V3), Sub(V3, V3), Cross(V3, V3), Dot(V3, V3)
- Add(M3, M3), Mul(M3, M3), Sub(M3, M3)
- Mul(M3, V3), Mul(V3, M3)
- Gui calculator:
- 3x1 vector (operator) 3x1 vector = 3x1 vector
- 3x3 matrix (operator) 3x3 matrix = 3x3 matrix
- Create a simple application for vectors(3x1) and matrices(3x3). Create classes Vector3 a Matrix33. Create GUI according to final sample. Implement operations for vectors: W = U + V, W = U - V, W.X = Dot(U,V), W = Cross(U,V), W.X = U.Length and for matrices: C = A + B, C = A - B, C = A * B, W = A * V, W = U * B. Implement them as operators '+', '-', '*',.. Create calculator application with all operations working similar as in final sample.
- Final sample Súbor:Ex2.zip
- template for homework Súbor:Temp.zip
Exercise03 [04/05.10] "Transformations 1"
- classes: Vector4, Matrix44, Polyline
- A.Transpose(), A.Inverse(), A.Determinant()
- Translate(K), Scale(K)
- Create a simple application with transformations and drawing. In transformations implement operations in Matrix44 labeled 'To Do'. In drawing implement free drawing using mouse left button_(down, move, up). Fill all sections labeled 'To Do'. Create 'Clear All' button. Create final application with all operations working similar as in final sample.
- Final sample Súbor:Ex3.zip
- template for homework and seminar - Súbor:TemplateEx3.zip
- Inverse Matrix: 
Exercise04 [11/12.10] "Transformations 2" (Onderik)
- Implement definition and modification of simple polyline objects. Following functionality have to be implemented based on the mouse butons and modifier keys.
- Left MB: Select pivot of one closest polyline.
- Left MB + SHIFT: Select more pivots.
- Left MB + CTRL: Create and place new polyline at the mouse cursor.
- Left MB + ALT: Add new point to the first selected polyline at mouse cursor.
- Right MB: Move seleted polylines in plane XY.
- Right MB + CTRL: Rotate selected polylines around Z-axis in XY plane.
- Right MB + SHIFT: Scale selected polylines uniformely in XY plane.
- Sample: Súbor:CG1.Ex04.zip
- Template: Súbor:CG1.Ex04.Template.zip
Exercise05 [18/19.10] "Projection" (Hudak)
- Implement 3 types of projection: orthogonal, perspective and parallel. Use Help to assign correct polyline to correct projection. Implement method to defined segment of projection line as projection of polyline 3(orange). Methods have to be a projections by definition and they also should be transparent to interaction with polylines(during rotation, scale or translate).
- Sample: Súbor:CG1.Ex05.zip
- Template: Súbor:CG1.Ex05.Template.zip
Exercise06 [25/26.10] "Rasterization of Line" (Onderik)
- Implement rasterization of line using both DDA and Bresenham algorithm. See sample and template for more info.
- Sample: Súbor:CG1.Ex06.zip
- Template: Súbor:CG1.Ex06.Template.zip
[1/2.11] - No Exercise
- study, study, study
Exercise07 [8/9.11] "Rasterization of Circle and Ellipse" (Hudak)
- Implement rasterization of Circle using both Bresenham and Midpoint algorithm. Also implement rasterization of Ellipse. See sample and template for more info.
- Sample: Súbor:CG1.Ex07.zip
- Template: Súbor:CG1.Ex07.Template.zip
Exercise08 [15/16.11] "Scanline of Polygon" (Onderik)
Exercise09 [22/23.11] "Flood Fill" (Hudak)
Exercise10 [29/30.11] "Clipping 1" (Onderik)
Exercise11 [06/07.12] "Clipping 2" (Hudak)
Exercise12 [13/14.12] "Visibility" (Onderik)
Revision as of 22:16, 7 November 2011 by Hudak