Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Chapter 9: Combining Transformation Operators
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
This Chapter: we will learn
How and Costs of combine operators
Inverse Operators
Pivoted Scale/Rotate
Programming Support UWBGL
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Given vertex:
Translate then Scale:
If
Then
And
Translate Then Scale
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Example:
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Compact Representation
Computation Efficiency Cost to concatenate Worthwhile if uses operator many
times
Concatenate:
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
!Warning! Order of operation
Recall …
So, if
Then, in general
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Example: Order of operation
For:
If and
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
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
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Inverse Transform: Undo
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
For example:
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
To undo (inverse):
If:
Then
Or:
Inverse of:
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Inverse of:
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
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
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
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
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Pivoted Scaling:
Scaling with respect to Pivot position:
E.g., scale rectanglewith respect topt=(1,5)
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Rotation with Arbitrary Pivot Pivot position:
E.g., rotate rectanglewith respect totop-right corner (pr)pt=(3,8)
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Tut 9.1: Simple Concatenation
Label B + C: Ma = S T Label D: loads Ma to MW All vertex goes through
V MW MV MP Rectangle transform by:
V Ma
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Tut 9.2: Order or concatenation
GUI Check box controls m_bTranslateFirst
Label B: Ma=ST or Ma=TS
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
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
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
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
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Tut 9.4: Pivoted Scale/Rotate
Implements:
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Tut 9.4: … details …
Label C computes:
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
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
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Lib9: Drawing with MatrixStack
DrawHelper: Defines the Stack behavior
D3D_DrawHelper Defines D3D Matrix Stack
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Lib9: D3D_DrawHelper
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Lib9: XformInfo class
Set/Get: Scale/Translate/Rotate Pivot
SetupModelStack(): Calls DrawHelper’s
AccumulateModelTransform()
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Tut 9.6: Using XformInfo
Identical to 9.5 … using XformInfo
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Tut 9.7: XformInfoControl
CXformInfoControls class (MFC Dialog)
Replace onto mainTutorialDlg
With a placeholder
Chapter 9
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer
Using CXformInfoControl CModel must support
Label B: GetSelectedXform() SetSelectedXform()
CXformInfoControl Access model’s selected xform From theApp->GetModel().Get/Set selectedXform()
Top Related