lecture 8 - fkm.utm.my kasim/eng_design/vr/lecture8-3d-transformation-in...آ  lecture 8 3d...

Download Lecture 8 - fkm.utm.my kasim/eng_design/vr/Lecture8-3D-transformation-in...آ  Lecture 8 3D Geometric

Post on 15-Mar-2020

0 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Lecture 8

    3D Geometric Transformation

  • Applying transformation matrices

     

     D

    nnn

    D

    nn

    zyx

    zyx

    zyx

    zyx

    zyx

    zyx

    yx

    yx

    yx

    yx

    yx

    yx

    nnn

    nn

    3

    222

    111

    '''

    '''

    '''

    2

    22

    11

    ''

    ''

    ''

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    222

    111

    22

    11

       

       

     

        

        

    

       

       

     

        

        

    

  • Translation

        

      

    

    

    1

    010

    001

    yx

    TR

     

       

       

    

    

    1

    0100

    0010

    0001

    zyx

    TR

    2D Translation

    3D Translation

    •Component-wise addition of vectors

    x’ = x + dx y’ = y + dy z’ = z + dz

    •To move polygons: translate vertices (vectors) and redraw lines between them •Preserves lengths and angles •Does not require reference point

  • Rotation

        

      

    

    

    

    100

    0cossin

    0sincos

    RRotation 2D

    •Rotation of vectors through an angle

    x’ = x cos Ө – y sin Ө y’ = x sin Ө + y cos Ө

    •Preserves lengths and angles •Point of rotation point (0,0)

    (X,Y)

    A

    (X cos - Y sin , x sin + Y cos)A’

    Center of

    rotation

    (0,0)

  • Rotation at other point than origin point

    Let say that the center of rotation is (x1, y1). Translation has to be carried before and after rotation

    Procedure 1. Convert the (x1, y1) to (0,0) by applying translation x

    = -x1 and y= -y1. 2. Apply the rotation matrix 3. Convert the (0,0) to its original point (x1, y1) by

    applying translation x = x1 and y = y1.

        

      

      

      

       

       

     

        

        

     111

    010

    001

    111

    010

    001

    1

    1

    1

    1

    1

    1

    22

    11

    ''

    ''

    ''

    22

    11

    yxyx yx

    yx

    yx

    yx

    yx

    yx

    R

    nnnn

  • 3D Rotation

     

       

       

      

    1000

    0cossin0

    0sincos0

    0001

    

     XR  

       

       

     

     

    1000

    0cos0sin

    0010

    0sin0cos

    

    

    YR

     

       

       

      

    1000

    0100

    00cossin

    00sincos

    

    

    ZR

    Axis of rotation: x

    Axis of rotation: z

    Axis of rotation: y

    If axis of rotation other than specified axis: apply translation before and after 3D rotation is applied

  • Foundation of transformations

    Similar method can be applied on other transformation such as shear, reflection etc.

    Important, if the transformation requires point (2D), axis (2D & 3D) and plane (3D) at the origin CS. Translation must be applied before and after applying the respective transformation.

  • Applying transformation composite matrices

    Do this transformation on screen 1. Draw rectangle any size 2. Translate dx = 6 3. Rotate it by 450

    1. The same rectangle

    2. Rotate it 450

    3. Translate dx = 6

    Q: Do both rectangles overlapping each other? Why?

  • Y

    X 0

    1

    1

    2

    2

    3 4 5 6 7 8 9 10

    3

    4

    5

    6

    Y

    X 0

    1

    1

    2

    2

    3 4 5 6 7 8 9 10

    3

    4

    5

    6

    Translation → Rotation

    Rotation → Translation

    Composite Transformations

  • Composite Transformation

           

        C

    nC

    XX 

    

    '

    321 ...

    Composite Transformation:

    Combination of multiple transformations must be in sequence.

  • Example 1

    A cube (1 x 1 x 1 ) as shown in Figure 2a is transformed into the solid as shown in Figure 2b. Establish the transformation matrices for this transformation.

    The scaling matrix transformation based on reference point of (0, 0, 0) is as in the following.

     

       

       

    

    1000

    000

    000

    000

    Z

    y

    x

    S S

    S

    S

  • Example 1: Solution

       

       

       

       

    1004

    0100

    0010

    0001

    1000

    0100

    0040

    0001

    [Scaling][Translation]

    Rename 3Dsolidcube.cpp and try this problem • Note: 1. Matrix in openGL is applied in reverse sequence, last will be applied first and first will be applied last. 2. By assign variable to the scale matrix and this variable will be controlled by the idle function, show an animation of the cube becomes bigger.

  • Example 2

    The available API function allows only to draw cube with ( l x l x l ) size. Based on this function and the transformation matrices, model the robotic arm with arm of ( 2 x 2 x 20) and (2 x 2 x 5) at the position as shown the figure. The center bottom of the lower arm is at ( 0, 0, 0).

    Discuss the methodology to model both lower and upper arm to be positioned as in the figure

  • Step 1: Scaling to lower and upper

           

       

    1000

    02000

    0020

    0002

    *1

    armLLarm The scaling of lower arm

    The scaling of the

    upper arm        

       

    1000

    0500

    0020

    0002

    *1

    armUU arm

    Example 2

  • Step 2: Translate the upper arm at the end of the lower arm

           

       

    12000

    0100

    0010

    0001

    *1*2

    armUU arm

    Step 3: Rotate lower and upper arm along +ve Y axis by 30o

       

        

        

     

    1000

    0)30cos(0)30sin(

    0010

    0)60sin(0)30cos(

    *1*3

    oo

    oo

    armarm LL

    The transformation for the

    lower arm.

    The transformation for the upper arm

           

       

        

        

     

       

       

    

    1)60sin(200)60cos(20

    0100

    0010

    0001

    1000

    0)30cos(0)30sin(

    0010

    0)30sin(0)30cos(

    1)60sin(200)60cos(20

    0100

    0010

    0001

    *2*3

    oo

    oo

    oo

    oo

    armarm UU

    Example 2

  • Step 4: Rotate upper arm along +ve Y axis by 10o

           

       

        

        

     

       

       

    

    1)60sin(200)60cos(20

    0100

Recommended

View more >