C/C++教程

Appendix D: Graphics matrix operations

本文主要是介绍Appendix D: Graphics matrix operations,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Great Microprocessors of the Past and Present (V 13.4.0) (cpushack.com)

3-D points are generally stored in four element vectors, defined as:
[X, Y, Z, W]
...where X, Y, and Z are the point 3-D coordinates, and W is the 'weight', and is used to normalise the result after an operation, multiplying each element by 1/W so that W ends equal to 1.

Points can be moved around by matric multiplication with 4X4 transformation matrices. Multiplying a vector with a matric produces a new vector, which is the transformed point. Standard transformation matrices are:

Identity (does not transform point):

    [ 1   0   0   0 ]
    [ 0   1   0   0 ]
    [ 0   0   1   0 ]
    [ 0   0   0   1 ]

Translate (move along X, Y, Z axes):

    [ 1   0   0   0 ]
    [ 0   1   0   0 ]
    [ 0   0   1   0 ]
    [ Tx  Ty  Tz  1 ]

Scale (translate to larger or smaller coordinates):

    [ Sx  0   0   0 ]
    [ 0   Sy  0   0 ]
    [ 0   0   Sz  0 ]
    [ 0   0   0   1 ]

Rotate (around X, Y, or Z axis by angle U):
    Axis X:            Axis Y:            Axix Z:

    [ 1   0   0   0 ]  [cosU 0 -sinU 0 ]  [cosU sinU 0   0 ]
    [ 0 cosU sinU 0 ]  [ 0   1   0   0 ] [-sinU cosU 0   0 ]
    [ 0-sinU cosU 0 ]  [sinU 0  cosU 0 ]  [ 0   0    1   0 ]
    [ 0   0   0   1 ]  [ 0   0   0   1 ]  [ 0   0    0   1 ]

Perspective (d is the distance of "eye" behind "screen"):

    [ 1   0   0   0 ]
    [ 0   1   0   0 ]
    [ 0   0   1   0 ]
    [ 0   0  1/d  0 ]

Transformation matrices can be combined by multiplying them together, so a single matrix can be use to shift, rotate, and scale a point in a single operation. Other 3-D operations using vectors are also frequently used, such as to determine intersection points or the reflection of light rays.

六级/考研单词: coordinate, norm, translate, axis, rotate, seldom, junction, ray

这篇关于Appendix D: Graphics matrix operations的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!