如果知道一个平行四边形的3各定点的坐标要把这个平行四边形变换成矩形的,用仿射变换,那6各系数如何求出
最好能给一些算法的代码,谢谢了~
最好能给一些算法的代码,谢谢了~
解决方案 »
- View类中的菜单项禁用
- 我用VC6 经常出现编译异常停止的情况。怎么解决?
- 对FD_READ的一点疑问,一行代码
- _ConnectionPtr连接ACCESS数据库的Options模式
- 送分的问题:
- 控制台程序如何隐藏自己?
- 请问怎么知道qq网友是否隐身状态?
- 关于对通讯数据缓存区操作的问题,参与者有分
- CRichEditCtrl是怎么回事,我一把它放到窗口上,我的程序就不能运行,一运行就退出来了:(((((((
- 在多文档中,如何直截打开指定文件?不用在打开文件对话框中选择,在程序中指定文件。
- 请问编译的时候如何让编译结果包含需要的DLL?
- 如何用 m_pRecordset->Find()进行两个字段匹配的查询!??
按照仿射坐标系的定义来说,空间任意一点P的仿射坐标{u,v } 满足:
P = u * (P2-P1) + v * (P3-P1) + P1
展开得到的方程为:
P.x = u * (P2-P1).x + v * (P3-P1).x + P1.x
P.y = u * (P2-P1).y + v * (P3-P1).y + P1.y为了方便,我们让:
c11 = (p2-p1).x c12 = (p3-p1).x c13 = p1.x
c21 = (p2-p1).y c22 = (p3-p1).y c23 = p1.y
既:
p.x = u * c11 + v * c12 + c13
p.y = u * c21 + v * c22 + c23而我们所需要的六个参数d11, d12, d13, d21, d22, d23,他们能满足:
u = d11 * p.x + d12 * p.y + d13
v = d21 * p.x + d22 * p.y + d23我们让delta = 1.0/ (c11 * c22 - c12 * c21)
d11 = c22 * delta d12 = -c21 * delta d13 = (c12*c23-c13*c22) * delta
d21 = c12 * delta d22 = -c11 * delta d23 = (c11*c23-c21*c13) * delta在这六个系数作用下
P1 对应为 {0, 0}
P2 对应为 {1, 0}
P3 对应为 {0, 1}
问一下,那个delta是怎么设置的
P1,P2,P3经过仿射变换后怎么能够成为如 P1(0,0),P2(m,0),p(0,n)这样的
就是说矩形的面积和原来四边形的一样。