Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Chapter 9: Combining Transformation Operators
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 This Chapter: we will learn How and Costs of combine operators Inverse Operators Pivoted Scale/Rotate Programming Support UWBGL
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Given vertex: Translate then Scale: If Then And Translate Then Scale
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Example:
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Compact Representation Computation Efficiency Cost to concatenate Worthwhile if uses operator many times Concatenate:
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 !Warning! Order of operation Recall … So, if Then, in general
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Example: Order of operation For: If and
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Reminder … Transforms V a Translation (T) followed by Scale (S) Vertex is to the left of the operators!! In our case (row vectors): the following is undefined!!
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Inverse Transform: Undo
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 For example:
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 To undo (inverse): If: Then Or: Inverse of:
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Inverse of:
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Inverse of concatenated operator Apply the inverse in reverse order! In general: Inverse is not unique E.g., R(θ), inverse can be R(-θ) or R(-θ+360), or R(- θ+270) …
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Combining Translation and Scaling Translate before scale to align vertex with origin “anchor” the vertex E.g., scale rectangle by S(3,0.5) with a fixed anchor (V c )
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Pivoted Scaling: Scaling with respect to Pivot position: E.g., scale rectangle with respect to pt=(1,5)
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Rotation with Arbitrary Pivot Pivot position: E.g., rotate rectangle with respect to top-right corner (pr) pt=(3,8)
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Tut 9.1: Simple Concatenation Label B + C: M a = S T Label D: loads M a to M W All vertex goes through V M W M V M P Rectangle transform by: V M a
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Tut 9.2: Order or concatenation GUI Check box controls m_bTranslateFirst Label B: M a =ST or M a =TS
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Matrix Stack: Push-down stack of matrices Graphics API support for concatenation of transform operators (matrices) Operations supported Push Pop Concatenation Translate/scale/rotate Load/Store
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Tut 9.3: Working with Matrix Stack Label C: Top of Stack <- ST Label D: Top of Stack <- TS Label E: M W <- Top of Stack
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Tut 9.4: Pivoted Scale/Rotate Implements:
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Tut 9.4: … details … Label C computes:
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Tut 9.5: Transform Primitives Label C1/C2: push/pop Label D: set up transform for Drawing rectangle 1 Label F: set up transform for Drawing rectangle 2
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Lib9: Drawing with MatrixStack DrawHelper: Defines the Stack behavior D3D_DrawHelper Defines D3D Matrix Stack
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Lib9: D3D_DrawHelper
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Lib9: XformInfo class Set/Get: Scale/Translate/Rotate Pivot SetupModelStack(): Calls DrawHelper’s AccumulateModelTransform()
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Tut 9.6: Using XformInfo Identical to 9.5 … using XformInfo
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Tut 9.7: XformInfoControl CXformInfoControls class (MFC Dialog) Replace onto main TutorialDlg With a placeholder
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Chapter 9 Using CXformInfoControl CModel must support Label B: GetSelectedXform() SetSelectedXform() CXformInfoControl Access model’s selected xform From theApp->GetModel().Get/Set selectedXform()