290 likes | 402 Views
Chapter 9: Combining Transformation Operators. This Chapter: we will learn. How and Costs of combine operators Inverse Operators Pivoted Scale/Rotate Programming Support UWBGL. Translate Then Scale. Given vertex: Translate then Scale: If Then And. Example:. Concatenate:.
E N D
Chapter 9: Combining Transformation Operators Chapter 9
This Chapter: we will learn • How and Costs of combine operators • Inverse Operators • Pivoted Scale/Rotate • Programming Support • UWBGL Chapter 9
Translate Then Scale • Given vertex: • Translate then Scale: • If • Then • And Chapter 9
Example: Chapter 9
Concatenate: • Compact Representation • Computation Efficiency • Cost to concatenate • Worthwhile if uses operator many times Chapter 9
!Warning! Order of operation • Recall … • So, if • Then, in general Chapter 9
Example: Order of operation • For: • If and Chapter 9
Reminder … • Transforms Va • Translation (T) followed by • Scale (S) • Vertex is to the left of the operators!! • In our case (row vectors): the following is undefined!! Chapter 9
Inverse Transform: Undo Chapter 9
For example: Chapter 9
Inverse of: • To undo (inverse): • If: • Then • Or: Chapter 9
Inverse of: 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) … Chapter 9
Combining Translation and Scaling • Translate before scale to • align vertex with origin • “anchor” the vertex • E.g., scale rectangleby S(3,0.5) witha fixed anchor (Vc) Chapter 9
Pivoted Scaling: • Scaling with respect to • Pivot position: • E.g., scale rectanglewith respect topt=(1,5) Chapter 9
Rotation with Arbitrary Pivot • Pivot position: • E.g., rotate rectanglewith respect totop-right corner (pr)pt=(3,8) Chapter 9
Tut 9.1: Simple Concatenation • Label B + C: Ma = S T • Label D: loads Ma to MW • All vertex goes throughV MW MV MP • Rectangle transform by:V Ma Chapter 9
Tut 9.2: Order or concatenation • GUI Check box controls • m_bTranslateFirst • Label B: • Ma=ST or • Ma=TS 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 Chapter 9
Tut 9.3: Working with Matrix Stack • Label C: Top of Stack <- ST • Label D: Top of Stack <- TS • Label E: MW<- Top of Stack Chapter 9
Tut 9.4: Pivoted Scale/Rotate • Implements: Chapter 9
Tut 9.4: … details … • Label C computes: 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 Chapter 9
Lib9: Drawing with MatrixStack • DrawHelper: • Defines the Stack behavior • D3D_DrawHelper • Defines D3D Matrix Stack Chapter 9
Lib9: D3D_DrawHelper Chapter 9
Lib9: XformInfo class • Set/Get: • Scale/Translate/Rotate • Pivot • SetupModelStack(): • Calls DrawHelper’sAccumulateModelTransform() Chapter 9
Tut 9.6: Using XformInfo • Identical to 9.5 … using XformInfo Chapter 9
Tut 9.7: XformInfoControl • CXformInfoControls class (MFC Dialog) • Replace onto mainTutorialDlg • With a placeholder Chapter 9
Using CXformInfoControl • CModel must support • Label B: • GetSelectedXform() • SetSelectedXform() • CXformInfoControl • Access model’s selected xform • From theApp->GetModel().Get/Set selectedXform() Chapter 9