参数表:
- hom_mat2d_reflect( : : HomMat2D, Px, Py, Qx, Qy : HomMat2DReflect)
复制代码
说明:
hom_mat2d_reflect将关于由两点(Px,Py)和(Qx,Qy)给出的轴的反射添加到齐次2d变换矩阵HomMat2D,并返回HomMat2DReflect中的结果矩阵。
反射由2×2反射矩阵m描述。它是相对于全局(即固定)坐标系进行的,这对应于以下变换矩阵链:
轴(Px,Py)-(Qx,Qy)在变换中是固定的,即当使用HomMat2DReflect进行变换时,轴上的点保持不变。为了获得这种行为,首先向输入变换矩阵添加一个平移,将轴移动到全局坐标系的原点。然后,添加反射,最后是将轴移回其原始位置的平移。这对应于以下转换链:
要在本地坐标系(即由HomMat2D描述的坐标系)中执行变换,请使用hom_mat2d_reflect_local。
(hom_mat2d_reflect_local默认以(0,0)本地坐标系,无需填写,所以px,py指定轴即可)
注意:
应当注意,齐次变换矩阵指的是一般的右手数学坐标系。
如果使用齐次变换矩阵来变换图像、区域、XLD轮廓或从图像中提取的任何其他数据,则必须在x坐标中传递变换的行坐标,而在y坐标中传递列坐标。
因此,传递行和列坐标的顺序遵循通常的顺序(Row行、Column列)。这种约定对于获得用于图标数据变换的右手坐标系是必不可少的,并且因此尤其确保旋转在正确的数学方向上执行。
注意,齐次矩阵是作为一个元组逐行存储的,通常不存储最后一行,因为它对于描述仿射变换的所有齐次矩阵都是相同的。
例如:
上面这个齐次矩阵[ra,rb,tc,rd,re,tf]存储为元组。该矩阵代表投影2D变换也可以处理3×3的矩阵。
代码:
- gen_contour_polygon_xld (Contour, [0,100,200,200,200], [0,0,0,100,200])
- hom_mat2d_identity (HomMat2DIdentity)
- hom_mat2d_reflect (HomMat2DIdentity, 0, 0, 10, 0, HomMat2DReflect) *基于Y
- *hom_mat2d_reflect (HomMat2DIdentity, 0, 0, 0, 10, HomMat2DReflect) *基于X
- *hom_mat2d_reflect (HomMat2DIdentity, 0, 0, 10, 10, HomMat2DReflect) *基于对角线
- affine_trans_contour_xld (Contour, ContoursAffineTrans, HomMat2DReflect)
复制代码
镜像前
镜像后
|