|
发表于 2025-7-28 11:56:31
|
显示全部楼层
本帖最后由 DaedraMech 于 2025-7-28 12:32 编辑 " X- A. ~9 O0 S" u/ I
- H0 B& Q* B" L2 K( \1 m! C0 R不知道我有没有正确理解楼主的意思,我先谈谈自己对坐标变换的理解:
) [: h& }( _1 u% T1 K$ ]坐标变换矩阵既是变换参数(转角、位移),又是变换后坐标系的基底在原坐标系上的坐标组合。
, Y! e7 O8 G$ [; R3 e
7 B% h3 J' m1 l. r! a0 a楼主在SW中使用的方法是控制三个正交平面和原平面各成30°,我个人更喜欢直接建立坐标系,由于x轴是YZ面法向量/y轴是XZ面法向量/z轴是XY面法向量,所以我约束3个新坐标轴和原坐标轴各成30°达到效果和楼主应该是一样的。三个基底([ix iy iz],[jx jy jz],[kx ky kz])有9个未知坐标值,有【3个基底长度为1】、【新基底和原坐标轴各成30°】、【基底之间互成90°】这9个约束一定能在SW中画出3个代表基底的线段,由此即可建立新坐标系,测量线段端点的坐标值即可获得变换矩阵。
a, p$ w: Q7 U, }& d8 `. E' I' i9 R# F
, Y1 G' C1 L5 x7 |8 G$ {7 g, k3 z
我们来测试一下,我们假设工具坐标系上有一点[0.5 0.6 0.7]',我们想知道该点在法兰坐标系上的坐标值,那就可以用变换矩阵左乘这个向量:
# G" z" F) j, d, j6 {
0 {7 l/ @$ G3 ]0 i$ D I# P把获得向量的坐标值输入SW,测量下它在工具坐标系下的坐标,果然还是[0.5 0.6 0.7]',变换矩阵是正确的:3 f+ D* }% n, z; t3 v0 Q8 Y& H
! N/ F2 e* N1 _; A' r$ _& M
, y7 j z5 q6 W9 f! \. M; c4 N7 ?0 A
如果坐标系还有位移,可以使用齐次变换矩阵进行变换:* B9 ~( g6 u" ?$ y U; d
! D" z( j/ H+ I
上面的演示中,楼主可以看到,矩阵里的坐标值就是特定角度的正弦/余弦值,所以欧拉角可以从这些角度中拆解出来,也就是总变换矩阵可以拆解成一系列单轴角度变换矩阵连续左乘,由此可以表示出坐标系绕各轴旋转的角度和先后顺序,这也就是楼主说的“面角转换为欧拉角”,过程较为麻烦,我个人不推荐这种方式。7 y6 A( A) P* z% u/ C
+ e, U3 n: w) c, Y" I8 t
- q9 O2 j& v( w0 l, p& T+ v
" ], |+ c" O# j |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
|