AcGeMatrix2d::alignCoordSys一种实现方式

问题描述

此处为了简化问题,在2维空间中处理,按以下方式调用,AcGeMatrix2d::alignCoordSys是如何求出一个矩阵的呢,这里提供一个实现思路(但效率不保证好)

AcGeMatrix2d matTrans = AcGeMatrix2d::alignCoordSys(
		AcGePoint2d(150, 125),
		-AcGeVector2d::kYAxis,
		AcGeVector2d::kXAxis,
		AcGePoint2d(1000, 1000),
		AcGeVector2d::kXAxis,
		AcGeVector2d::kYAxis);

求解过程

AcGeMatrix2d::alignCoordSys函数的功能,即如何求出矩阵:

a11 a12 a13
a21 a22 a23
0   0    1

已知变量如下:

fromOriginX,fromOriginY =(150,125)
fromAxisXx, fromAxisXy = (0,-1)
fromAxisYx, fromAxisYy = (1,0)
toOriginX,toOriginY =(1000,1000)
toAxisXx, toAxisXy =(1,0)
toAxisYx, toAxisYy =(0,1)

根据对齐映射关系,得到如下等式

a11*fromOriginX + a12*fromOriginY + a13 = toOriginX
a21*fromOriginX + a22*fromOriginY + a23 = toOriginY
a11*fromAxisXx + a12*fromAxisXy + a13 = toAxisXx
a21*fromAxisXx + a22*fromAxisXy + a23 = toAxisXy
a11*fromAxisYx + a12*fromAxisYy + a13 = toAxisYx
a21*fromAxisYx + a22*fromAxisYy + a23 = toAxisYy

所以得到如下线性方程组

a11*150 + a12*125 + a13 = 1000
a21*150 + a22*125 + a23 = 1000
a11*0 + a12*-1 + a13 = 1
a21*0 + a22*-1 + a23 = 0
a11*1 + a12*0 + a13 = 0
a21*1 + a22*0 + a23 = 1

使用消元法求解即可(即用矩阵的初等变换将系数矩阵化为阶梯型矩阵)

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值