World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Display transformation matrix functions
+ Граф связей класса Display transformation matrix functions:

Функции

double av_display_rotation_get (const int32_t matrix[9])
 
void av_display_rotation_set (int32_t matrix[9], double angle)
 
void av_display_matrix_flip (int32_t matrix[9], int hflip, int vflip)
 

Подробное описание

The display transformation matrix specifies an affine transformation that should be applied to video frames for correct presentation. It is compatible with the matrices stored in the ISO/IEC 14496-12 container format.

The data is a 3x3 matrix represented as a 9-element array:

| a b u |
(a, b, u, c, d, v, x, y, w) -> | c d v |
| x y w |

All numbers are stored in native endianness, as 16.16 fixed-point values, except for u, v and w, which are stored as 2.30 fixed-point values.

The transformation maps a point (p, q) in the source (pre-transformation) frame to the point (p', q') in the destination (post-transformation) frame as follows:

| a b u |
(p, q, 1) . | c d v | = z * (p', q', 1)
| x y w |

The transformation can also be more explicitly written in components as follows:

p' = (a * p + c * q + x) / z;
q' = (b * p + d * q + y) / z;
z = u * p + v * q + w

Функции

◆ av_display_rotation_get()

double av_display_rotation_get ( const int32_t  matrix[9])

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/display.h>

Extract the rotation component of the transformation matrix.

Аргументы
matrixthe transformation matrix
Возвращает
the angle (in degrees) by which the transformation rotates the frame counterclockwise. The angle will be in range [-180.0, 180.0], or NaN if the matrix is singular.
Заметки
floating point numbers are inherently inexact, so callers are recommended to round the return value to nearest integer before use.

◆ av_display_rotation_set()

void av_display_rotation_set ( int32_t  matrix[9],
double  angle 
)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/display.h>

Initialize a transformation matrix describing a pure counterclockwise rotation by the specified angle (in degrees).

Аргументы
matrixan allocated transformation matrix (will be fully overwritten by this function)
anglerotation angle in degrees.

◆ av_display_matrix_flip()

void av_display_matrix_flip ( int32_t  matrix[9],
int  hflip,
int  vflip 
)

#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavutil/display.h>

Flip the input matrix horizontally and/or vertically.

Аргументы
matrixan allocated transformation matrix
hflipwhether the matrix should be flipped horizontally
vflipwhether the matrix should be flipped vertically