三维物体模型的仿射变换矩阵

三维物体模型的仿射变换矩阵

代码及演示

dev_get_window (WindowHandle)

* 创建一个3*4*5的长方体三维模型,注意是使用点云创建
X:=[0,0,3,3,0,0,3,3]
Y:=[0,4,0,4,0,4,0,4]+1
Z:=[0,0,0,0,5,5,5,5]

gen_object_model_3d_from_points (X, Y, Z, ObjectModel3D)
convex_hull_object_model_3d (ObjectModel3D, ObjectModel3DConvexHull)

* 分别沿X、Y、Z方向平移
hom_mat3d_identity (HomMat3DIdentity)

hom_mat3d_translate (HomMat3DIdentity, -4, 0, 0, HomMat3DTranslate)
affine_trans_object_model_3d (ObjectModel3DConvexHull, HomMat3DTranslate, ObjectModel3DAffineTransX)

hom_mat3d_translate (HomMat3DIdentity, 0, -5, 0, HomMat3DTranslate)
affine_trans_object_model_3d (ObjectModel3DConvexHull, HomMat3DTranslate, ObjectModel3DAffineTransY)

hom_mat3d_translate (HomMat3DIdentity, 0, 0, -6, HomMat3DTranslate)
affine_trans_object_model_3d (ObjectModel3DConvexHull, HomMat3DTranslate, ObjectModel3DAffineTransZ)

visualize_object_model_3d (WindowHandle, \
                           [ObjectModel3DConvexHull,ObjectModel3DAffineTransX,ObjectModel3DAffineTransY,ObjectModel3DAffineTransZ], \
                           [], [0,0,250,0,0,0,0], \
                           ['disp_pose','color_0','color_1','color_2','color_3','alpha'], \
                           ['true','green','blue','gray','red',0.7], \
                           [], [], [], PoseOut)

* 分别绕X、Y、Z轴旋转,px,py,pz是移动旋转轴的位置
* 例如绕Z轴旋转,如果想移动旋转轴位置,可以改变px,py,而改变pz则是没有任何作用的
hom_mat3d_identity (HomMat3DIdentity)
hom_mat3d_rotate (HomMat3DIdentity, rad(-45), 'x', 0, 0, 0, HomMat3DRotate)
affine_trans_object_model_3d (ObjectModel3DConvexHull, HomMat3DRotate, ObjectModel3DAffineTransRX)

hom_mat3d_rotate (HomMat3DIdentity, rad(90), 'y', 5, 5, 5, HomMat3DRotate)
affine_trans_object_model_3d (ObjectModel3DConvexHull, HomMat3DRotate, ObjectModel3DAffineTransRY)

hom_mat3d_rotate (HomMat3DIdentity, rad(90), 'z', 0, 2, 0, HomMat3DRotate)
affine_trans_object_model_3d (ObjectModel3DConvexHull, HomMat3DRotate, ObjectModel3DAffineTransRZ)

visualize_object_model_3d (WindowHandle, \
                           [ObjectModel3DConvexHull,ObjectModel3DAffineTransRX,ObjectModel3DAffineTransRY,ObjectModel3DAffineTransRZ], \
                           [], [0,0,250,0,0,0,0], \
                           ['disp_pose','color_0','color_1','color_2','color_3','alpha'], \
                           ['true','green','blue','gray','red',0.7], \
                           [], [], [], PoseOut)
    
* 缩放 SX,SY,SZ设置缩放比例,px,py,pz设置缩放中心
hom_mat3d_identity (HomMat3DIdentity)
hom_mat3d_scale (HomMat3DIdentity, 2, 2, 2, 8, 0, 0, HomMat3DScale)
affine_trans_object_model_3d (ObjectModel3DConvexHull, HomMat3DScale, ObjectModel3DAffineTransS)

visualize_object_model_3d (WindowHandle, \
                           [ObjectModel3DConvexHull,ObjectModel3DAffineTransS], \
                           [], [0,0,250,0,0,0,0], \
                           ['disp_pose','color_0','color_1','alpha'], \
                           ['true','green','blue',0.7], \
                           [], [], [], PoseOut)              

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MechMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值