ZV_AFFINETRANS -- 仿射变换

类型

变换

描述

num个点执行仿射变换。仿射变换的变换范围较广,它包含了刚性变换、相似变换,因此刚性变换矩阵、相似变换矩阵、仿射变换矩阵都可以此指令对坐标点进行变换。此指令的变换矩阵为23列是由于33列的齐次变换矩阵的最后一行是固定的数据001,二维坐标(x,y)转换成齐次坐标(x,y,1)只需在第三维上加1,因此对二维坐标点进行变换的公式如下:

仿射变换

变换矩阵的线性变换部分a1,a2,a3,a4负责对坐标点(x,y)进行线性变换如旋转、缩放、斜切等,坐标平移量tx,ty负责对坐标点(x,y)进行平移。

变换方程如下:

语法

ZV_AFFINETRANS(mat,num,tab_s_pos,tab_d_pos)

参数:

matZVOBJECT类型,变换矩阵

num:坐标点数量

tab_s_posTABLE索引,待变换的坐标点,从TABLE索引处开始xy依次存放

tab_d_pos:输出参数,TABLE索引,变换后的坐标点,依次存放xy

适用控制器

支持ZV功能或者5系列以上的控制器

例子

ZVOBJECT mat

TABLE(0, 1, 0.2, 0, 0, 1, 0)'将数据存入到TABLE(0)

ZV_MATGENDATA(mat,2,3,0)'变换矩阵

TABLE(10,0,0,2,2,5,5)'存储变换前的三个点的坐标

ZV_AFFINETRANS(mat,3,10,100)’使用仿射变换矩阵mat对输入坐标点进行仿射变换,将变换后的点存入开始索引为100TABLE