float4x4 结构

用于 3D 转换的 4x4 矩阵。

此矩阵类型使用行向量布局。 此矩阵的转换向量的 x、y 和 z 对应于字段 m41、m42、m43。

此类型仅在 C++ 中可用。 其 .NET 等效项是 System.Numerics.Matrix4x4

构造函数

名称 说明
float4x4() 创建未初始化的 float4x4。
float4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44) 创建具有指定值的 float4x4。
explicit float4x4(float3x2 value) 从 float3x2 创建 float4x4。
float4x4(Microsoft::?Graphics::?Canvas::?Numerics::?Matrix4x4 const& value) Microsoft.Graphics.Canvas.Numerics.Matrix4x4 转换为 float4x4。

函数

名称 说明
float4x4 make_float4x4_billboard(float3 const& objectPosition, float3 const& cameraPosition, float3 const& cameraUpVector, float3 const& cameraForwardVector) 使用右手坐标系创建围绕指定对象位置旋转的球面广告牌。
float4x4 make_float4x4_?constrained_billboard(float3 const& objectPosition, float3 const& cameraPosition, float3 const& rotateAxis, float3 const& cameraForwardVector, float3 const& objectForwardVector) 使用右手坐标系创建绕指定轴旋转的柱形广告牌。
float4x4 make_float4x4_translation(float3 const& position) 创建平移矩阵。
float4x4 make_float4x4_translation(float xPosition, float yPosition, float zPosition) 创建平移矩阵。
float4x4 make_float4x4_scale(float xScale, float yScale, float zScale) 创建以原点为中心的缩放矩阵。
float4x4 make_float4x4_scale(float xScale, float yScale, float zScale, float3 const& centerPoint) 创建以指定点为中心的缩放矩阵。
float4x4 make_float4x4_scale(float3 const& scales) 创建以原点为中心的缩放矩阵。
float4x4 make_float4x4_scale(float3 const& scales, float3 const& centerPoint) 创建以指定点为中心的缩放矩阵。
float4x4 make_float4x4_scale(float scale) 创建以原点为中心的缩放矩阵。
float4x4 make_float4x4_scale(float scale, float3 const& centerPoint) 创建以指定点为中心的缩放矩阵。
float4x4 make_float4x4_rotation_x(float radians) 创建以原点为中心的 x 轴旋转矩阵。
float4x4 make_float4x4_rotation_x(float radians, float3 const& centerPoint) 创建以指定点为中心的 x 轴旋转矩阵。
float4x4 make_float4x4_rotation_y(float radians) 创建以原点为中心的 y 轴旋转矩阵。
float4x4 make_float4x4_rotation_y(float radians, float3 const& centerPoint) 创建以指定点为中心的 y 轴旋转矩阵。
float4x4 make_float4x4_rotation_z(float radians) 创建以原点为中心的 Z 轴旋转矩阵。
float4x4 make_float4x4_rotation_z(float radians, float3 const& centerPoint) 创建以指定点为中心的 Z 轴旋转矩阵。
float4x4 make_float4x4_from_axis_angle(float3 const& axis, float angle) 创建围绕任意向量旋转的矩阵。
float4x4 make_float4x4_perspective_field_of_view(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance) 使用右手坐标系基于视野创建透视投影矩阵。
float4x4 make_float4x4_perspective(float width, float height, float nearPlaneDistance, float farPlaneDistance) 使用右手坐标系创建透视投影矩阵。
float4x4 make_float4x4_perspective_off_center(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance) 使用右手坐标系创建自定义透视投影矩阵。
float4x4 make_float4x4_orthographic(float width, float height, float zNearPlane, float zFarPlane) 使用右手坐标系创建正交投影矩阵。
float4x4 make_float4x4_?orthographic_off_center(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane) 使用右手坐标系创建自定义正交投影矩阵。
float4x4 make_float4x4_look_at(float3 const& cameraPosition, float3 const& cameraTarget, float3 const& cameraUpVector) 使用右手坐标系创建视图矩阵。
float4x4 make_float4x4_world(float3 const& position, float3 const& forward, float3 const& up) 使用右手坐标系创建世界矩阵。 这可用于在 3D 空间中定位对象。
float4x4 make_float4x4_from_quaternion(quaternion const& quaternion) 从四元数创建旋转矩阵。
float4x4 make_float4x4_from_yaw_pitch_roll(float yaw, float pitch, float roll) 从指定的偏航、俯仰和滚动创建旋转矩阵。
float4x4 make_float4x4_shadow(float3 const& lightDirection, plane const& plane) 创建将几何图形平展到指定平面中(如同从指定光源进行投影)的矩阵。
float4x4 make_float4x4_reflection(plane const& value) 创建围绕指定平面反射坐标系统的矩阵。
bool is_identity(float4x4 const& value) 检查这是否是标识矩阵。
float determinant(float4x4 const& value) 计算矩阵的行列。
float3 translation(float4x4 const& value) 获取矩阵的转换向量。
bool invert(float4x4 const& matrix, _Out_ float4x4* result) 计算矩阵的反数。 如果矩阵可以反转,则返回 true;否则为 false。
bool decompose(float4x4 const& matrix, _Out_ float3* scale, _Out_ quaternion* rotation, _Out_ float3* translation) 从 3D 缩放/旋转/平移 (SRT) 矩阵中提取标量、平移和旋转组件。 如果矩阵可以分解,则返回 true;否则为 false。
float4x4 transform(float4x4 const& value, quaternion const& rotation) 通过应用四元数旋转来转换矩阵。
float4x4 transpose(float4x4 const& matrix) 将矩阵的分量沿其对角线转置。
float4x4 lerp(float4x4 const& matrix1, float4x4 const& matrix2, float amount) 在两个矩阵的对应值之间线性内插。

方法

名称 说明
static float4x4 identity() 返回标识矩阵的实例。

运算符

名称 说明
float4x4 operator+ (float4x4 const& value1, float4x4 const& value2) 将矩阵的每个组件添加到另一个矩阵。
float4x4 operator- (float4x4 const& value1, float4x4 const& value2) 从另一个矩阵中减去矩阵的每个组件。
float4x4 operator* (float4x4 const& value1, float4x4 const& value2) 将一个矩阵乘以另一个矩阵。 这具有连接两个转换的效果。
float4x4 operator* (float4x4 const& value1, float value2) 将矩阵的每个组件乘以标量值。
float4x4 operator- (float4x4 const& value) 否定矩阵的每个组件。
float4x4& operator+= (float4x4& value1, float4x4 const& value2) 就地将矩阵的每个组件添加到另一个矩阵。
float4x4& operator-= (float4x4& value1, float4x4 const& value2) 就地从另一个矩阵中减去矩阵的每个组件。
float4x4& operator*= (float4x4& value1, float4x4 const& value2) 就地将一个矩阵乘以另一个矩阵。 这具有连接两个转换的效果。
float4x4& operator*= (float4x4& value1, float value2) 就地将矩阵的每个组件乘以标量值。
bool operator== (float4x4 const& value1, float4x4 const& value2) 确定 float4x4 的两个实例是否相等。
bool operator!= (float4x4 const& value1, float4x4 const& value2) 确定 float4x4 的两个实例是否不相等。
operator Microsoft::?Graphics::?Canvas::?Numerics::?Matrix4x4() const 将 float4x4 转换为 Microsoft.Graphics.Canvas.Numerics.Matrix4x4

字段

名称 说明
float m11 矩阵第 1 行第 1 列的值。
float m12 矩阵第 1 行第 2 列的值。
float m13 矩阵第 1 行第 3 列的值。
float m14 矩阵第 1 行第 4 列处的值。
float m21 矩阵第 2 行第 1 列的值。
float m22 矩阵第 2 列第 2 行处的值。
float m23 矩阵第 2 行第 3 列的值。
float m24 矩阵第 2 列 4 行处的值。
float m31 矩阵第 3 行第 1 列处的值。
float m32 矩阵第 3 行第 2 列的值。
float m33 矩阵第 3 行第 3 列的值。
float m34 矩阵第 3 行第 4 列的值。
float m41 矩阵第 4 行第 1 列处的值。
float m42 矩阵第 4 行第 2 列处的值。
float m43 矩阵第 4 列 3 行处的值。
float m44 矩阵第 4 列第 4 行处的值。

要求

要求
命名空间 Windows::Foundation::Numerics
标头
Windowsnumerics.h

另请参阅

windowsnumerics.h API