首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有内置函数的Matrix4x4 TRS

没有内置函数的Matrix4x4 TRS
EN

Stack Overflow用户
提问于 2022-10-21 15:59:03
回答 1查看 49关注 0票数 1

我刚接触过堆栈溢出和c#,所以请不要犹豫,给我更多的提示来问更好的问题。

我试图了解更多关于Matrix4x4.TRS函数的信息。我已经看到它背后有一个很大的数学部分,比如四元数旋转,Vector3来平移和缩放。我想了解更多关于数学的知识,这样我就可以创建我自己的matrix4x4 TRS,而不用使用Unity提供的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-21 21:15:25

非常简单的任务,一旦你意识到什么数据去哪里。在这里考虑Vector4的4列:

代码语言:javascript
运行
复制
c0     c1     c2     c3

Xx  ,  Yx  ,  Zx  ,  Tx
Xy  ,  Yy  ,  Zy  ,  Ty
Xz  ,  Yz  ,  Zz  ,  Tz
 0  ,   0  ,   0  ,  1

c0/X -x方向(以0结尾)

c1/Y -y方向(以0结尾)

c2/Z -z方向(以0结尾)

c3/T -翻译(以1结尾)

代码语言:javascript
运行
复制
// inputs:
Vector3 position = new Vector3(1f, 2f, 3f);
Quaternion rotation = Quaternion.Euler(100f, 200f, 300f);
Vector3 scale = new Vector3(1f, 2f, 3f);

// calculations:
Vector4 c0 = new Vector4( rotation * new Vector3(scale.x,0,0) , 0 );
Vector4 c1 = new Vector4( rotation * new Vector3(0,scale.y,0) , 0 );
Vector4 c2 = new Vector4( rotation * new Vector3(0,0,scale.z) , 0 );
Vector4 c4 = new Vector4( position , 1 );

// output:
Matrix4x4 TRS = new Matrix4x4( c0, c1, c2, c3 );

从内存中编写的

^代码,所以请原谅我在什么地方出错了.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74156286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档