struct mat3 {
float3 x;
float3 y;
float3 z;
};
float3 rotation(float3 mp, float3 pos) {
float s = 0.0f;
float c = 0.0f;
struct mat3 rotX;
s = sin(mp.x); c = cos(mp.x);
rotX.x = (float3)(1.0f, 0.0f, 0.0f);
rotX.y = (float3)(0.0f, c, -s);
rotX.z = (float3)(0.0f, s, c);
struct mat3 rotY;
s = sin(mp.y); c = cos(mp.y);
rotY.x = (float3)(c, 0.0f, s);
rotY.y = (float3)(0.0f, 1.0f, 0.0f);
rotY.z = (float3)(-s, 0.0f, c);
struct mat3 rotZ;
s = sin(mp.z); c = cos(mp.z);
rotZ.x = (float3)(c, -s, 0.0f);
rotZ.y = (float3)(s, c, 0.0f);
rotZ.z = (float3)(0.0f, 0.0f, 1.0f);
float3 m2x = (float3)(rotY.x.x, rotY.y.x, rotY.z.x);
float3 m2y = (float3)(rotY.x.y, rotY.y
绕固定 xyz 轴旋转
最新推荐文章于 2024-02-02 18:03:42 发布
这段代码展示了如何计算3D空间中绕xyz轴旋转的矩阵。提供了三种旋转矩阵计算方法:rotation()函数用于绕固定轴旋转,makeRotationMatrix()通过输入角度计算旋转矩阵,rotationMatrix()则接受轴和角度参数来生成旋转矩阵。每个函数最后将旋转矩阵应用到给定点的位置上,返回旋转后的新位置坐标。
摘要由CSDN通过智能技术生成