算法尝试(二)
来源:互联网 发布:心内事无人知的图片 编辑:程序博客网 时间:2024/05/16 12:45
一、球面坐标变换
单位球所在基准空间,以转轴向北极单位向量记ez,定赤道某处为经度0度,球心向该点单位向量记ex,根据右手系,ey=outer_product(ez, ex)。从球心出发向量v_r指向球面上点P,沿经线向南单位向量记ey_s,沿纬线向东单位向量记ex_s,指向球心的为ez_s=-v_r。设该点的经纬度坐标为(alhpa, beta)。球面变换是求当转移到(alpha_new, beta_new)的P_new处,坐标系从coord(ex_s, ey_s, ez_s)变为coord(ex_s_new, ey_s_new, ez_s_new)的变换矩阵。
记R_x(angle)、R_y(angle)和R_z(angle)分别为坐标系围绕其第一、二、三分量右手系旋转angle角的变换矩阵。当点从P平移到赤道上同经度点P1,球面坐标系变为coord(ex_s_1, ey_s_1, ez_s_1),有关系式:coord(ex_s_1, ey_s_1, ez_s_1) == transform(coord(ex_s, ey_s, ez_s), R_x(beta))。同样,从P_new平移至赤道同经度点P2,球面坐标coord(ex_s_2, ey_s_2, ez_s_2) == transform(coord(ex_s_new, ey_s_new, ez_s_new), R_x(beta_new))。而从P1转至P2,有coord(ex_s_2, ey_s_2, ez_s_2) == transform(coord(ex_s_1, ey_s_1, ez_s_1), R_y(alpha - alpha_new))。从而,coord(ex_s_new, ey_s_new, ez_s_new) == transform(coord(ex_s, ey_s, ez_s), R_x(beta) * R_y(alpha - alpha_new) * R_x(-beta_new))。可见转换和和纬度差有关,始末纬度无关。
简记P,P1,P2,P_new的球面坐标系和基准系分别为:(0),(1),(2),(3),(B),矩阵右乘代表坐标变换,另外的推导方法有:(1) == (0)R_x(beta),(B)R_z(alpha) == (1)C,(B)R_z(alpha_new) == (2)C,(2) == (3)R_x(beta_new),其中C={{0, 1, 0}, {0, 0, -1}, {-1, 0, 0}}。计算结果一致。另外还有别的导出方法,但实质一样,且需要注意的是正交变换是唯一的,因为正交矩阵是可逆的。
单位球所在基准空间,以转轴向北极单位向量记ez,定赤道某处为经度0度,球心向该点单位向量记ex,根据右手系,ey=outer_product(ez, ex)。从球心出发向量v_r指向球面上点P,沿经线向南单位向量记ey_s,沿纬线向东单位向量记ex_s,指向球心的为ez_s=-v_r。设该点的经纬度坐标为(alhpa, beta)。球面变换是求当转移到(alpha_new, beta_new)的P_new处,坐标系从coord(ex_s, ey_s, ez_s)变为coord(ex_s_new, ey_s_new, ez_s_new)的变换矩阵。
记R_x(angle)、R_y(angle)和R_z(angle)分别为坐标系围绕其第一、二、三分量右手系旋转angle角的变换矩阵。当点从P平移到赤道上同经度点P1,球面坐标系变为coord(ex_s_1, ey_s_1, ez_s_1),有关系式:coord(ex_s_1, ey_s_1, ez_s_1) == transform(coord(ex_s, ey_s, ez_s), R_x(beta))。同样,从P_new平移至赤道同经度点P2,球面坐标coord(ex_s_2, ey_s_2, ez_s_2) == transform(coord(ex_s_new, ey_s_new, ez_s_new), R_x(beta_new))。而从P1转至P2,有coord(ex_s_2, ey_s_2, ez_s_2) == transform(coord(ex_s_1, ey_s_1, ez_s_1), R_y(alpha - alpha_new))。从而,coord(ex_s_new, ey_s_new, ez_s_new) == transform(coord(ex_s, ey_s, ez_s), R_x(beta) * R_y(alpha - alpha_new) * R_x(-beta_new))。可见转换和和纬度差有关,始末纬度无关。
简记P,P1,P2,P_new的球面坐标系和基准系分别为:(0),(1),(2),(3),(B),矩阵右乘代表坐标变换,另外的推导方法有:(1) == (0)R_x(beta),(B)R_z(alpha) == (1)C,(B)R_z(alpha_new) == (2)C,(2) == (3)R_x(beta_new),其中C={{0, 1, 0}, {0, 0, -1}, {-1, 0, 0}}。计算结果一致。另外还有别的导出方法,但实质一样,且需要注意的是正交变换是唯一的,因为正交矩阵是可逆的。
- 算法尝试(二)
- 尝试docker (二)
- 算法尝试(一)
- KMP算法(尝试)
- angular js尝试(二)
- 尝试翻译JRUnit的文档(二)
- Socket(二)尝试多线程的服务端
- 尝试用sshpass解决问题(二)
- 尝试解析js面试题(二)
- 尝试阅读ReentrantLock、AbstractQueuedSynchronizer源码(二)
- hadoop 尝试(二)
- 控制程序中thread同时执行数目尝试(二)
- 线程安全的内存池 c++ 尝试(二)
- android移植(二)-4的尝试移植过程
- Bash下的git.multi_gc尝试(二)
- 作业系列 - 尝试编写SQL数据库(二)
- 4399小游戏 十滴水 求解器(遗传算法尝试)
- 快速幂算法初尝试
- :)活活。。Blog开通
- 成为一个受欢迎的人(转自开复学生网)
- helix server 架设多服务图文教程
- 如何获得行之有效的学习方法
- java.util包1
- 算法尝试(二)
- 如何学习C++(转自开复学生网)
- Form9iBlock实现查询条件记忆刷新
- 遇见
- 绝对有用的小常识
- Astro
- Unicode版OCX的LoadLibrary时出错的问题解决
- 关于remove_if的错误用法
- 英语吵架一百句,绝对不粗俗