D3Dh函数

D3DXCOLOR* D3DXColorAdd   //两个颜色的组合值
D3DXCOLOR* WINAPI D3DXColorAdjustContrast( //调整颜色对比度
D3DXCOLOR *pOut,
const D3DXCOLOR *pC,
FLOAT c
);
D3DXCOLOR* WINAPI D3DXColorAdjustSaturation( //调整颜色饱和度
D3DXCOLOR *pOut,
const D3DXCOLOR *pC,
FLOAT s
);
D3DXCOLOR* D3DXColorLerp //两个颜色线性插值补创建一个颜色
D3DXCOLOR* D3DXColorModulate //混合两个颜色
D3DXCOLOR* D3DXColorScale //按比例放大或缩小颜色值
D3DXCOLOR* D3DXColorNegative //创建一个颜色的冷色值
D3DXCOLOR* D3DXColorSubtract //两个颜色相减
HRESULT WINAPI D3DXCreateMatrixStack //创建一个ID3DXMarixStack实例
FLOAT* WINAPI D3DXFresnelTerm   //计算菲涅尔系数
FLOAT* WINAPI D3DXFloat16To32Array //转换16float数组至32
D3DXFLOAT16* WINAPI D3DXFloat32To16Array//转换32float数组至16
D3DXMATRIX* WINAPI D3DXMatrixAffineTrandformation(//创建放射变换矩阵
D3DXMATRIX* pOut,
FLOAT scaling,
const D3DXQUATERNION *pRotation,
const D3DXVECTOR3* pTranslation
);


D3DXMATRIX* D3DXMatrixAffinrTransformation2D//在平面创建放射变换矩阵
HRESULT WINAPI D3DXMatrixDecompose //分解一个3D变换矩阵为缩放系数,旋转分量和平移向量
FLOAT WINAPI D3DXMatrixDeterminant //计算矩阵行列式值
D3DXMATRIX* D3DXMatrixIdentity   //创建单位矩阵
D3DXMATRIX* D3DXMatrixInverse   //计算逆矩阵
BOOL D3DXMatrixIsIdentity   //判断单位矩阵
D3DXMATRIX* WINAPI D3DXMatrixLookAtLH //创建左手系观察矩阵
D3DXMATRIX* WINAPI D3DXMatrixLookATRH //创建右手系观察矩阵
D3DXMatrix* WINAPI D3DXMatrixMultiply //两个矩阵相乘
D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose//矩阵乘积的转置
D3DXMATRIX* WINAPI D3DXMatrixOrthoLH //创建左手正交投影矩阵
D3DXMATRIX* WINAPI D3DXMatrixOrthoRH //创建右手正交投影矩阵
D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH//创建用户定制的左手正交投影矩阵
D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH//创建用户制定的右手正交投影矩阵
D3DXMATRIX* WINAPI D3DXMatrixPerspectiveForLH//创建左手投影坐标系
D3DXMATRIX* WINAPI D3DXMatrixPerspectiveForRH//创建右手投影坐标系
D3DXMATRIX* WINAPI D3DXMatrixRotationAxis //创建绕任意轴旋转地矩阵
D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion//四元组创建旋转矩阵
D3DXMATRIX* WINAPI D3DXMatrixRotationX   //X轴旋转矩阵
D3DXMATRIX* WINAPI D3DXMatrixRotationY   //Y轴旋转矩阵
D3DXMATRIX* WINAPI D3DXMatrixRotationZ   //Z轴旋转矩阵
D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll//XYZ角度旋转矩阵
D3DXMATRIX* WINAPI D3DXMatrixScaling   //沿XYZ缩放矩阵
D3DXMATRIX* WINAPI D3DXMatrixShadow   //创建平面阴影矩阵
D3DXMATRIX* WINAPI D3DXMatrixTransformation //创建一个变换矩阵
D3DXMATRIX* WINAPI D3DXMatrixTransformation2D//创建一个平面变换矩阵
D3DXMATRIX* WINAPI D3DXMatrixTranspose   //把矩阵转置
FLOAT D3DXPlaneDot    //平面方程与4D向量的点乘
FLOAT D3DXPlaneDotCoord    //平面与3D向量的点乘,w=1
FLOAT D3DXPlaneDotNormal   //平面与3D向量的点乘,w=0
D3DXPLANE* WINAPI D3DXPlaneFromPointNormal //点法创建平面
D3DXPLANE* WINAPI D3DXPlaneFromPoints   //三点创建平面
D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine //找出直线平面交点
D3DXPLANE* WINAPI D3DXPlaneNormalize//规格化平面方程系数以求单位法线
D3DXPLANE* D3DXPlaneScale   //缩放平面
D3DXPLANE* WINAPI D3DXPlaneTransform //矩阵转置平面
D3DXPLANE* WINAPI D3DXPlaneTransformArray//用变换矩阵变换平面数组
D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric//三个四元数的重心
D3DXQUATERNION* D3DXQuaternionConjugate   //求共轭四元数
FLOAT D3DXQuaternionDot     //四元数点乘
D3DXQUATERNION* WINAPI D3DXQuaternionExp //四元数指数
D3DXQUATERNION* WINAPI D3DXQuaternionInverse//共轭变换并规格化四元数
D3DXQUATERNION* D3DXQuaternionIdentity   //单位四元数
BOOL D3DXQuaternionIsIdentity    //判断单位四元数
FLOAT D3DXQuaternionLength    //返回四元数长度
FLOAT D3DXQuaternionLengthSq    //返回四元数长度平方
D3DXQUATERNION* WINAPI D3DXQuaternionLn   //计算自然对数
D3DXQUATERNION* WINAPI D3DXQuaternionMultiply //两个四元数相乘
D3DXQUATERNION* WINAPI D3DXQuaternionNormalize //单位长度的四元数
D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis//绕轴旋转四元数
D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix//旋转矩阵创建四元数
D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll//XYZ旋转创建的四元数
D3DXQUATERNION* WINAPI D3DXQuaternionSlerp //两个四元数球面插值
D3DXQUATERNION* WINAPI D3DXQuaternionSquad //球面四边形插四元数
void WINAPI D3DXQuaternionSquadSetup //创建球面四边形插值的控制点
void WINAPI D3DXQuaternionToAxisAngle//向量绕自身旋转角度计算四元数
FLOAT* WINAPI D3DXSHAdd    //球面调和函数向量相加
D3DXVECTOR2* D3DXVec2Add   //2D向量相加
D3DXVECTOR* WINAPI D3DXVec2BaryCentric //三个平面向量的重心
D3DXVECTOR2* WINAPI D3DXVec2CatmullRom //Catmull-Rom插值计算,2D
FLOAT D3DXVec2CCW    //2D向量叉乘的z分量
FLOAT D3DXVec2Dot    //2D向量点乘
D3DXVECTOR2* WINAPI D3DXVec2Hermite //Hermite样条插值
FLOAT D3DXVec2Length    //2D向量长度
FLOAT D3DXVec2LengthSq    //2D向量长度平方
D3DXVECTOR2* D3DXVec2Lerp   //2D向量长线性插值
D3DXVECTOR2* D3DXVec2Maximize   //由两个2D向量中最大分量组成
D3DXVECTOR2* D3DXVec2Minimize   //由两个2D向量中最小分量组成
D3DXVECTOR2* WINAPI D3DXVec2Normalize //规格化2D向量
D3DXVECTOR2* D3DXVec2Scale   //缩放2D向量
D3DXVECTOR2* D3DXSubtract   //2D向量相减
D3DXVECTOR2* WINAPI D3DXVec2Transform //矩阵来变换2D向量
D3DXVECTOR2* WINAPI D3DXVec2TransformArray //用矩阵变换数组

D3DXVECTOR2* WINAPI D3DXVec2TransformCoord //矩阵变换2D向量w=1
D3DXVECTOR2* WINAPI D3DXVec2TransformCoordArray //矩阵变换一组向量(x,y,0,1)
D3DXVECTOR2* WINAPI D3DXVec2TransformNormal//矩阵变换2D向量一般成份
D3DXVECTOR2* WINAPI D3DXVec2TransformNormalArray//矩阵变换向量(x,y,0,0)

D3DXVECTOR3* D3DXVec3Add   //3D向量相加
D3DXVECTOR3* WINAPI D3DXVec3BaryCentric //三个3D向量的重心坐标点
D3DXVECTOR3* WINAPI D3DXVec3CatmullRom //3D向量CatmullRom插值
D3DXVECTOR3* D3DXVec3Cross   //3D向量叉乘
FLOAT D3DXVec3Dot    //3D向量点乘
D3DXVECTOR3* WINAPI D3DXVec3Hermite //3D向量Hermite样条插值
FLOAT D3DXVec3Length    //3D向量长度
FLOAT D3DXVec3LengthSq    //3D向量长度平方
D3DXVECTOR3* D3DXVec3Maximize   //由两个3D向量中最大分量组成
D3DXVECTOR3* D3DXVec3Minimize   //由两个3D向量中最小分量组成
D3DXVECTOR3* D3DXVec3Lerp   //3D向量线性插值
D3DXVECTOR3* WINAPI D3DXVec3Normalize //3D向量规格化
D3DXVECTOR3* WINAPI D3DXVec3Project //对象向量从空间投影到屏幕
D3DXVECTOR3* D3DXVec3Scale   //缩放3D向量
D3DXVECTOR3* D3DXVec3Subtract   //3D向量相减
D3DXVECTOR4* WINAPI D3DXVec3Transform //矩阵把向量进行变换,w=1
D3DXVECTOR4* WINAPI D3DXVec3TransformArray//矩阵把向量数组进行变换
D3DXVECTOR3* WINAPI D3DXVec3TransformCoord//矩阵变换3D向量并置w1的投影结果
D3DXVECTOR3* WINAPI D3DXVec3TransformCoordArray//矩阵变换3D向量数组并置w1的投果
D3DXVECTOR3* WINAPI D3DXVec3TransformNormal//矩阵变换向量标准式,w=0
D3DXVECTOR3* WINAPI D3DXVec3TransformNormalArray//矩阵变换向量数组标准式,w=0

D3DXVECTOR4* D3DXVec4Add    //两个4D向量相加
D3DXVECTOR3* WINAPI D3DXVec3Unproject   //向量从屏幕投影到对象
D3DXVECTOR3* WINAPI D3DXVec3UnprojectArray//向量数组从屏幕投影到对象
D3DXVECTOR4* WINAPI D3DXVec4CatmullRom   //4D向量CatmullRom插值
D3DXVECTOR4* WINAPI D3DXVec4BaryCentric   //4D向量组成三角形的重心
D3DXVECTOR4* WINAPI D3DXVec4Cross   //4D向量叉乘
D3DXVECTOR4* WINAPI D3DXVec4Dot    //4D向量点乘、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现正向运动学函数,需要先知道机械臂各个关节的DH参数(Denavit-Hartenberg参数),以及每个关节的角度值。然后根据这些参数和角度值,通过一定的计算得到机械臂末端的位置。 以下是一个简单的实现,假设机械臂有三个关节: ```python import math import numpy as np # DH参数 d1, a1, alpha1 = 0.1, 0, math.pi/2 d2, a2, alpha2 = 0, 0.2, 0 d3, a3, alpha3 = 0, 0.1, 0 # 角度值 q1, q2, q3 = math.pi/4, math.pi/6, math.pi/3 def forward_kinematics(q1, q2, q3): # 转换为弧度制 q1, q2, q3 = np.radians(q1), np.radians(q2), np.radians(q3) # 旋转矩阵和平移向量 R_01 = np.array([[math.cos(q1),-math.sin(q1)*math.cos(alpha1), math.sin(q1)*math.sin(alpha1)], [math.sin(q1), math.cos(q1)*math.cos(alpha1),-math.cos(q1)*math.sin(alpha1)], [ 0, math.sin(alpha1), math.cos(alpha1)]]) R_12 = np.array([[math.cos(q2),-math.sin(q2)*math.cos(alpha2), math.sin(q2)*math.sin(alpha2)], [math.sin(q2), math.cos(q2)*math.cos(alpha2),-math.cos(q2)*math.sin(alpha2)], [ 0, math.sin(alpha2), math.cos(alpha2)]]) R_23 = np.array([[math.cos(q3),-math.sin(q3)*math.cos(alpha3), math.sin(q3)*math.sin(alpha3)], [math.sin(q3), math.cos(q3)*math.cos(alpha3),-math.cos(q3)*math.sin(alpha3)], [ 0, math.sin(alpha3), math.cos(alpha3)]]) p_01 = np.array([a1*math.cos(q1), a1*math.sin(q1), d1]) p_12 = np.array([a2*math.cos(q2), a2*math.sin(q2), d2]) p_23 = np.array([a3*math.cos(q3), a3*math.sin(q3), d3]) # 计算机械臂末端位置 p_e = R_01.dot(p_01) + R_01.dot(R_12).dot(p_12) + R_01.dot(R_12).dot(R_23).dot(p_23) return p_e # 测试 p_e = forward_kinematics(q1, q2, q3) print(p_e) ``` 这里假设机械臂有三个关节,每个关节的DH参数分别为$d_1, a_1, \alpha_1, d_2, a_2, \alpha_2, d_3, a_3, \alpha_3$,每个关节的角度值分别为$q_1, q_2, q_3$。然后,通过旋转矩阵和平移向量的计算,得到机械臂末端的位置$p_e$。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值