打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于Mathematica机器人应用中空间变换的几种实现方法
Mathematica操作
首先,优先使用系统内置函数实现,与此相关的内置函数包括Translate/TranslationTransform、Rotate/RotationTransform这几个常用的。每个函数在不同的场景下有不同的优势。
实例1:使用系统内置“动词”函数
(*使用系统内置“动词”函数*)cube = Cylinder[{{0, 0, 0}, {0, 0, 0.5}}, 0.2]; (*生成一个圆柱体*)cube1 = Rotate[Translate[cube, {1, 1, 1}], 45 Degree, {1, 0, 0}]; (*使用系统自带动作变换函数进行变换,先平移,再旋转*)实例2:使用系统内置“名词”函数
(*使用系统内置“名词”函数*)cube = Cylinder[{{0, 0, 0}, {0, 0, 0.5}}, 0.2]; (*生成一个圆柱体*)cube2 = GeometricTransformation[GeometricTransformation[cube, TranslationTransform[{1, 1,1}]], RotationTransform[60 Degree, {1, 0, 0}]];(*使用系统自带名词变换函数进行变换,先平移,再旋转*)实例3:使用自定义函数
(*使用自定义函数*)SetDirectory["Z:\Wushuichuan\05-计算仿真\基于Mathematica机器人仿真\Packages"];<< Screws.mtransform[shape_, g_] := GeometricTransformation[shape, TransformationFunction[g]] (*定义图形变换函数*)r = {{1, 0, 0}, {0, Cos[45 Degree], -Sin[45 Degree]}, {0, Sin[45 Degree], Cos[45 Degree]}}; (*定义一个绕X轴旋转45度对应的矩阵*)p = {1, 1, 1}; (*生成一个平移向量*)g = RPToHomogeneous[r, p]; (*生成一个4x4的变换矩阵*)cube = Cylinder[{{0, 0, 0}, {0, 0, 0.5}}, 0.2]; (*生成一个圆柱体*)cube3 = transform[cube, g]; (*使用自定义图形变函数进行变换*)
后记
语言方法
2999Jsv1411551
wRT88偏门暴利
40442012-08-19 00:10:52
以上每种方法在不同的场景均有不同的优势,要灵活运用,主要是函数参数的形式不一样。具体应用可以参考
注意系统内置动词性函数和名词性函数的区别,一般情况下,动词性 函数可单独使用,名词性函数要配合其它函数使用,如实例2中要配合GeometricTransformation函数使用。名词性函数只是产生了一个相应的变换矩阵,且告诉系统这不是一个一般的矩阵,这是一个变换用的矩阵。
实例3中的自定义函数和实例2中的名词性函数有相似之处,这个相似性与TransformationFunction有关,名词性变换函数产生的是一个变换矩阵,一般的变换矩阵不能直接用于变换,必须要由TransformationFunction函数来告知系统这是一个变换矩阵,经它处理后就可以当作GeometricTransformation的参数作为变换矩阵用于变换了。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数学软件三巨头(Matlab/Mathematica/Maple)
第11讲 Mathematica内置函数的使用规则
性能度量RMSE
数学建模方法与技巧
Mathematica命令
Mathematica 在教育领域的应用综述 01
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服