1 / 29

Chapter 9: Combining Transformation Operators

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:.

kylar
Download Presentation

Chapter 9: Combining Transformation Operators

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 9: Combining Transformation Operators Chapter 9

  2. This Chapter: we will learn • How and Costs of combine operators • Inverse Operators • Pivoted Scale/Rotate • Programming Support • UWBGL Chapter 9

  3. Translate Then Scale • Given vertex: • Translate then Scale: • If • Then • And Chapter 9

  4. Example: Chapter 9

  5. Concatenate: • Compact Representation • Computation Efficiency • Cost to concatenate • Worthwhile if uses operator many times Chapter 9

  6. !Warning! Order of operation • Recall … • So, if • Then, in general Chapter 9

  7. Example: Order of operation • For: • If and Chapter 9

  8. 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

  9. Inverse Transform: Undo Chapter 9

  10. For example: Chapter 9

  11. Inverse of: • To undo (inverse): • If: • Then • Or: Chapter 9

  12. Inverse of: Chapter 9

  13. 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

  14. 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

  15. Pivoted Scaling: • Scaling with respect to • Pivot position: • E.g., scale rectanglewith respect topt=(1,5) Chapter 9

  16. Rotation with Arbitrary Pivot • Pivot position: • E.g., rotate rectanglewith respect totop-right corner (pr)pt=(3,8) Chapter 9

  17. 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

  18. Tut 9.2: Order or concatenation • GUI Check box controls • m_bTranslateFirst • Label B: • Ma=ST or • Ma=TS Chapter 9

  19. 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

  20. 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

  21. Tut 9.4: Pivoted Scale/Rotate • Implements: Chapter 9

  22. Tut 9.4: … details … • Label C computes: Chapter 9

  23. 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

  24. Lib9: Drawing with MatrixStack • DrawHelper: • Defines the Stack behavior • D3D_DrawHelper • Defines D3D Matrix Stack Chapter 9

  25. Lib9: D3D_DrawHelper Chapter 9

  26. Lib9: XformInfo class • Set/Get: • Scale/Translate/Rotate • Pivot • SetupModelStack(): • Calls DrawHelper’sAccumulateModelTransform() Chapter 9

  27. Tut 9.6: Using XformInfo • Identical to 9.5 … using XformInfo Chapter 9

  28. Tut 9.7: XformInfoControl • CXformInfoControls class (MFC Dialog) • Replace onto mainTutorialDlg • With a placeholder Chapter 9

  29. Using CXformInfoControl • CModel must support • Label B: • GetSelectedXform() • SetSelectedXform() • CXformInfoControl • Access model’s selected xform • From theApp->GetModel().Get/Set selectedXform() Chapter 9

More Related