找回密码
 注册
查看: 2758|回复: 13

GridPro中椭球面与圆柱面的建立

[复制链接]
发表于 2013-8-5 14:51:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
这里简单介绍下创建椭球面时,面的尺寸与位置的参数设置问题。

位置的调整是通过旋转矩阵实现的,具体的知识涉及到了复变函数的一些基础知识。这里也就是简单介绍下,因为好久不接触了,有些数学名词可能会用的不太准确,时间比较紧,也就没修改。大家多包涵啦~~~

下面进入正题

椭球面的位置和尺寸是通过坐标实现的,也就是center、semi-u\v\w四行。
u、v、w是相对于椭球面的坐标系,center是此坐标的远点位置,初始值是对齐到笛卡尔坐标系的uvw轴分别对应xyz轴。改变center的坐标相当于对坐标系进行平移,后面三项相当于对坐标轴进行旋转。旋转与尺寸的输入有两种方法,一种是如图的3X4矩阵;另一种是3X3矩阵。
平移很简单,这里就不细说了。下面简单介绍下坐标轴旋转方法,先是3X4矩阵的方法:
首先,这三行的数据相当于一个4X3的矩阵。其中,前三列构成的方阵可当成是复变函数中的旋转矩阵(有细微的差别,稍后会说到),最后一列是椭球的尺寸。比如前三列不变,最后一列改成(1,2,3),那么将会创建一个三个主方向半径分别为1、2、3的椭球。
对话框位置.jpg
设置窗口.jpg
 楼主| 发表于 2013-8-5 14:56:39 | 显示全部楼层
用word写的,复制到这里显示不了公式,只能截图了......

下面通过调整旋转矩阵来旋转椭球,这里就需要用到旋转矩阵的知识了。这里简单介绍一下公式及其由来,详细推导可以参考高等代数和复变函数教材,知识很基础,不是数学专业的也能看得懂。
先以二维空间为例,比如将xoy坐标系绕原点旋转一定角度角,成为uov坐标系。最直观的公式变化用复数或者极坐标,转化成矩阵变换表示就是(如图) ,这个方阵就是二维的旋转矩阵。将此公式推广到三维空间,绕z轴旋转的旋转矩阵就是(如图) 。与此类似,绕x轴的旋转矩阵是(如图) ;绕y轴的旋转矩阵是(如图) 。对于多次旋转只要把每次旋转的旋转矩阵相乘即可,但要注意,由于旋转矩阵是左乘,所以要最后乘第一次的旋转矩阵最先乘最后一次的旋转矩阵。

[ 本帖最后由 PQY26 于 2013-8-5 14:59 编辑 ]
二维旋转矩阵.jpg
绕x轴旋转.jpg
绕y轴旋转.jpg
绕z轴旋转.jpg
 楼主| 发表于 2013-8-5 15:01:56 | 显示全部楼层
下面把刚才做的椭球绕z轴旋转30°
由于GridPro里没法输入根式,所以要把根式算成小数。也就是

[ 本帖最后由 PQY26 于 2013-8-5 15:34 编辑 ]
绕z轴旋转30度的旋转矩阵.jpg
旋转后的椭球.jpg
 楼主| 发表于 2013-8-5 15:02:44 | 显示全部楼层
下面介绍下GP的旋转矩阵与复变的旋转矩阵的区别。复变的旋转矩阵是正交矩阵,行列式值为1,而GP里并不要求正交阵,每一行的比例与正交阵相同即可,换句话说,每一行乘以一个数之后,并不影响旋转。而建立好的椭球面再次reload查看的时候,会发现GP自动将非正交阵转化成了正交矩阵。
 楼主| 发表于 2013-8-5 15:03:14 | 显示全部楼层
接下来介绍下3X3与3X4的对应关系:
3X3的旋转矩阵是包含椭球尺寸的旋转,与3X4的矩阵是对应的,用3X3的矩阵建立椭球之后重新reload查看,会发现参数已经变成3X4矩阵。将3X3的矩阵的一行各项的平方和开根号就等于其对应的3X4矩阵的尺寸列向量,而前面的三列会自动转化成正交的旋转矩阵。
 楼主| 发表于 2013-8-5 15:06:24 | 显示全部楼层
另外,圆柱面也是通过椭球面来创建的,只要把一个方向的半径设置的很长,比如1e12,就可以近似当成是圆柱面  。


时间仓促,就简单说说~哪不清楚我再具体解释~~  
发表于 2013-8-5 16:06:39 | 显示全部楼层

回复 6# PQY26 的帖子

非常详细 还是原话 求模型练手啊 哈哈
发表于 2013-8-5 17:15:05 | 显示全部楼层

回复 7# milaoshu 的帖子

这个你自己应该能在GridPro里面建立吧!!
发表于 2013-8-6 10:14:16 | 显示全部楼层

回复 3# PQY26 的帖子

输入不是正交矩阵的旋转参数,如果关掉这个对话框,在点reload current,前面3*3矩阵应该会变成这个样子,这应该就是你说的GP自动把非正交矩阵变成了正交矩阵的情况吧?

[ 本帖最后由 a582234617 于 2013-8-6 10:35 编辑 ]
之前不用输入正交矩阵就可以实现旋转.jpg
重新reload打开的参数.jpg
发表于 2013-8-6 10:23:05 | 显示全部楼层

回复 5# PQY26 的帖子

3X3与3X4的对应关系,我的理解是这样子的

如果用3X3创建,输入3X3的参数,最后一列是1,创建完成后,3X3变成了正交矩阵,最后一列变成了椭球的尺寸参数,不再为1

如果用3X4创建,直接在最后一列输入椭球参数就可以,旋转的话,再根据旋转要求在3X3里输入参数,如图,感觉用这种方法比较方便,尺寸用最后一列,旋转用前三列,楼主把公式都贴出来了,自己照着算一下就ok,很简单的。只是关闭对话框重新打开,发现数字变了,不要紧,仔细看一下,其实是GP增加了有效数字,这样提高了精度。

理解对不对,还楼主点评一下呀

[ 本帖最后由 a582234617 于 2013-8-6 10:28 编辑 ]
3X4创建椭球.jpg
绕z轴旋转30度.jpg
关闭对话框重新打开.jpg
关闭对话框重新打开.jpg
 楼主| 发表于 2013-8-6 11:22:29 | 显示全部楼层

回复 10# a582234617 的帖子

对的   reload发现数变了不要紧的   只是被变成了标准旋转矩阵加尺寸列向量的形式而已

再次旋转的时候推荐使用系统变换好旋转矩阵  再左乘上想要再次旋转的旋转矩阵    这样精确度能更高一点~~
发表于 2013-8-6 13:42:34 | 显示全部楼层

回复 11# PQY26 的帖子

嗯,用系统变换好的矩阵精度当然高一点,

“所以要最后乘第一次的旋转矩阵最先乘最后一次的旋转矩阵。“

这句话看半天才明白,多次旋转,就把矩阵写成一排,按倒序,最左边的是最后一次,然后从左往右计算,哈哈,是这样吧?
 楼主| 发表于 2013-8-6 15:17:46 | 显示全部楼层

回复 12# a582234617 的帖子

对对   就是每次都要左乘   
昨天晕晕的  没说明白...
发表于 2013-8-6 15:44:59 | 显示全部楼层

回复 13# PQY26 的帖子

哈哈,已经说了很多很详细了,现在大家应该能看明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表