DX12:DirectXMath库里向量XMVECTOR与矩阵XMMATRIX的相关函数

总结了下DXMath库中针对对向量类型XMVECTOR及矩阵XMMATRIX类型(这里XM含义为XNA Math)的相关函数,归纳在下面的代码中,相信有一定线性代数知识的话,就能轻松了解运用

#include<windows.h>
#include<DirectXMath.h>
#include<DirectXPackedVector.h>
#include<iostream>
using namespace std;
using namespace DirectX;
using namespace DirectX::PackedVector;

int main()
{
	if (!XMVerifyCPUSupport())//是否支持DX的SSE2指令集
	{
		cout << "DX not supported" << endl;
		return 0;
	}

//以下为DXMath库中向量的各种获取函数
	XMVECTOR xmvE1 = XMVectorZero();//返回零向量
	XMVECTOR xmvE2 = XMVectorSplatOne();//返回向量(1,1,1,1)
	XMVECTOR xmvE3 = XMVectorSet(1.0f, 2.0f, 3.0f, 0.0f);//Set向量
	XMVECTOR xmvE4 = XMVectorReplicate(-2.0f);//返回(-2.0f,-2.0f,-2.0f,-2.0f)向量
	XMVECTOR xmvE5 = XMVectorSplatZ(xmvE3);//返回xmvE3的分量Z,(xmvE3.z,xmvE3.z,xmvE3.z,xmvE3.z)向量,剩下的一样的

//以下为DXMath库中向量的各种计算函数
       XMVECTOR xmvN = XMVectorSet(0, 0, 0, 0);
	   XMVECTOR xmvU = XMVectorSet(0, 0, 0, 0);

        XMVECTOR xmvA = xmvN + xmvU;
		XMVECTOR xmvB = xmvN - xmvU;
		XMVECTOR xmvC = 10.0f*xmvU;
		XMVECTOR xmvD = XMVector3Length(xmvU);//取模运算
		XMVECTOR xmvE = XMVector3Normalize(xmvU);//单位化
		XMVECTOR xmvF = XMVector3Dot(xmvN, xmvU);//点乘返回实数,注意这里的XMVECTOR中的4个分量是相同的
		XMVECTOR xmvG = XMVector3Cross(xmvN, xmvU);//叉乘返回向量

		XMVECTOR projW;
		XMVECTOR propW;

		XMVector3ComponentsFromNormal(&projW,&propW,xmvW,xmvN);//返回基于n的对W的projW,和propW

		bool bEqual = XMVector3Equal(projW + propW, xmvW) != 0;//向量比较

		XMVECTOR xmvAngle = XMVector3AngleBetweenVectors(projW, propW);//向量夹角
		float fAngleRadians = XMVectorGetX(xmvAngle);//拆解向量一个值,返回float。这里是弧度制
		float fAngleDegress = XMConvertToDegrees(fAngleRadians);//弧度变角度



//以下为DXMath库中对矩阵的各种获取函数
        XMMATRIX xmmA(1.0f, 0.0f, 0.0f, 0.0f,
		0.0f, 2.0f, 0.0f, 0.0f,
		0.0f, 0.0f, 4.0f, 0.0f,
		1.0f, 2.0f, 3.0f, 1.0f);
        XMMATRIX xmmB = XMMatrixIdentity();//单位矩阵
	    XMMATRIX xmmC = xmmA * xmmB;//矩阵乘法
	    XMMATRIX xmmD = XMMatrixTranspose(xmmA);//转置矩阵
	    XMVECTOR xmmDet = XMMatrixDeterminant(xmmA);//行列式
	    XMMATRIX xmmF = XMMatrixInverse(&xmmDet, xmmA);//逆矩


//以下为DXMath库中变换矩阵的获取,计算函数,为更好看到形参含义下面给出函数声明
/*
     XMMATRIX XM_CALLCONV XMMatrixScaling(
	 float ScaleX,
	 float ScaleY,
	 float ScaleY,
	 float ScaleZ);//构建缩放矩阵,形参为缩放系数

	 XMMATRIX XM_CALLCONV XMMatrixScalingFromVector(
	 FXMVECTOR Scale);//构件缩放矩阵,形参为缩放系数组成的向量

	 XMMATRIX XM_CALLCONV XMMatrixRotationX(
	 float Angle);//构建旋转变换矩阵,绕X轴顺时针旋转Angle度

	 XMMATRIX XM_CALLCONV XMMatrixRotationAxis(
	 FXMVECTOR Axis,
	 float Angle);//构建旋转变换矩阵,绕任意向量顺时针旋转Angle度

	 XMMATRIX XM_CALLCONV XMMatrixTranslation(
	 float OffSetX,
	 float OffSetY,
	 float OffSetZ);//构建平移矩阵,形参为平移系数

	 XMMATRIX XM_CALLCONV XMMatrixTranslationFromVector(
	 FXMVECTOR OffSet);//构建平移矩阵,平移系数为OffSet3D分量

	 XMVECTOR XM_CALLCONV XMVector3TransformCoord(
	 FXMVECTOR V,CXMMATRIX M);//进行向量变换,返回向量与矩阵的乘积VM,此函数针对点变换,V的最后分量为1

	 XMVECTOR XM_CALLCONV XMVector3TranslationFormNoraml(
	 FXMVECTOR V,
	 CXMMATRIX M);//进行向量变换,返回向量与矩阵的乘积VM,此函数针对向量的变换,V的最后分量为0
	*/

        



	return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值