版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、空间直角坐标转换之仿射变换一、仿射变换仿射变换是空间直角坐标变换的一种,它是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直线”和“平行性”,其可以通过一系列的原子变换的复合来实现,包括平移(Translation)、缩放(Seale、翻转(Flip)、旋转(Rotation)和剪切(Shear,此类变换可以用一个3X3的矩阵来表示,其最后一行为(0,0,1)。该变换矩阵将原坐标(x,y)变换为新坐标(x,y),这里原坐标和新坐标皆视为最末一行为(1)的三维列向量,原列向量左乘变换矩阵得到新的列向量:xm00m01m02xm00*x+m01*y+m02y=m10m11m12y=m10
2、*x+m11*y+m12100111如果将它写成按旋转、缩放、平移三个分量的复合形式,则其代数式如下:x=m00*x+m01*y+m02;y=m10*x+m11*y+m12;其示意图如下:ro几种典型的仿射变换:1 .publicstaticAffineTransformgetTranslateInstance(doubletx,doublety)平移变换,将每一点移动到(x+tx,y+ty),变换矩阵为:10tx01ty001(译注:平移变换是一种“刚体变换,rigid-bodytransformation,中学学过的物理,都知道啥叫“刚体”吧,就是不会产生形变的理想物体,平移当然不会改变二
3、维图形的形状。同理,下面的“旋转变换”也是刚体变换,而“缩放”“错切”都是会改变图形形状的。)2 .publicstaticAffineTransformgetScaleInstance(doublesx,doublesy)缩放变换,将每一点的横坐标放大(缩小)sx倍,纵坐标放大(缩小)至sy倍,变换矩阵为:sx000sy03 .publicstaticAffineTransformgetShearInstance(doubleshx,doubleshy)剪切变换,变换矩阵为:1shx0shy10001相当于一个横向剪切与一个纵向剪切的复合1001shx0shy10010001001(译注:“
4、剪切变换”又称“错切变换”,指的是类似于四边形不稳定性那种性质,街边小商店那种铁拉门都见过吧?想象一下上面铁条构成的菱形拉动的过程,那就是“错切”的过程。)4 .publicstaticAffineTransformgetRotateInstance(doubletheta)旋转变换,目标图形围绕原点顺时针旋转theta弧度,变换矩阵为:cos(theta)-sin(theta)0sin(theta)cos(theta)00015 .publicstaticAffineTransformgetRotateInstance(doubletheta,doublex,doubley)旋转变换,目标图
5、形以(x,y)为轴心顺时针旋转theta弧度,变换矩阵为:cos(theta)-sin(theta)x-x*cos+y*sinsin(theta)cos(theta)y-x*sin-y*cos相当于两次平移变换与一次原点旋转变换的复合:10-xcos(theta)01-ysin(theta)0010、仿射变换四参数求解-sin(theta)010xcos(theta)001y01001A、C#自定义函数实现求解:1、求解旋转参数Rotaion:1日日/summary234567891011121314/获取旋转角度/summary/paramname=fromCoordPoint1/源点1目标
6、点1源点2目标点215/returns返回旋转角度/returns1617privatedoubleGetRotation(CoordPointfromPoint1,CoordPointtoPoint1,CoordPointfromPoint2,CoordPointtoPoint2)1819日日(2021doublea=(toPoint2.Y-toPoint1.Y)*(fromPoint2.X-fromPoint1.X)-(toPoint2.X-toPoint1.X)*(fromPoint2.Y-fromPoint1.Y);2223Idoubleb=(toPoint2.X-toPoint1.X
7、)*(fromPoint2.X-fromPoint1.X)+(toPoint2.Y-toPoint1.Y)*(fromPoint2.Y-fromPoint1.Y);242526272829303132if(Math.Abs(b)0)returnMath.Tan(a/b);else33returnMath.Tan(0);2345678910111213141516173435L)2、求解缩放比例参数(Scale):1日U/获取缩放比例因子/源点1/目标点1/源点2/目标点2/旋转角度/返回旋转因子1819privatedoubleGetScale(CoordPointfromPoint1,Coo
8、rdPointtoPoint1,CoordPointfromPoint2,CoordPointtoPoint2,doublerotation)2021日日(2223 doublea=toPoint2.X-toPoint1.X;2425 Idoubleb=(fromPoint2.X-fromPoint1.X)*Math.Cos(rotation)-(fromPoint2.Y-fromPoint1.Y)*Math.Sin(rotation);2627 if(Math.Abs(b)0)2829 returna/b;3031 else3233 return0;3435 L)3、求解X方向偏移距离参数(
9、XTranslate:1/*/23/得到X方向偏移量45/67/源点189/目标点11011/旋转角度1213/缩放因子1415/返回X方向偏移量1617privatedoubleGetXTranslation(CoordPointfromPoint1,CoordPointtoPoint1,doublerotation,doublescale)18192021return(toPoint1.X-scale*(fromPoint1.X*Math.Cos(rotation)-fromPoint1.Y*Math.Sin(rotation);222324254、求解Y方向偏移距离参数(YTransla
10、te):1/*/23/得到Y方向偏移量45/67/源点189/目标点11011/旋转角度1213/缩放因子1415/返回丫方向偏移量1617privatedoubleGetYTranslation(CoordPointfromPoint1,CoordPointtoPoint1,doublerotation,doublescale)18192021return(toPoint1.Y-scale*(fromPoint1.X*Math.Sin(rotation)+fromPoint1.Y*Math.Cos(rotation);2223EkC#+AE)ftW:1LJL_lIIIIII从控制点定义仿射变
11、换程式IIIIII源控制点III目标控制点1011III返回变换定义1213privateITransformationGetAffineTransformation(IPointpFromPoints,IPointpToPoints)1415口日1617II实例化仿射变换对象1819);IAffineTransformation2D3GENtAffineTransformation=newAffineTransformation2DClass(21II从源控制点定义参数202223tAffineTransformation.DefineFromControlPoints(refpFromPo
12、ints,refpToPoints);2425查询引用接口2627ITransformationtTransformation=tAffineTransformationasITransformation;2829returntTransformation;3031L三、空间对象转换求出参数后,再利用公式对相应坐标点进行转换是一件相对简单的事件了。示例代码:/转换空间点/点/返回转换后的点privateIGeometryTransformPoint(IPointpPoint)/*/说明:采用相似变换模型(四参数变换模型)/X=ax+by+c/Y=-bx+ay+d/*doubleA=this.m_Scale*Math.Cos(doubleB=this.m_Scale*Math.Sin(IPointtPoint=newPointClass();tPoint.X=A*pPoint.X+B*pPoint.Y+this.m_RotationAngle);this.m_RotationAngle);this.m_DX;tPoint.Y=B*(-1.0)*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 超深矿井智能通风与避险系统指南
- 浙江省杭州市余杭区2025-2026学年五年级上学期期末考试语文试卷(文字版含答案)
- 2026年综合外科医护专项医院招聘考试笔试试题(含答案)
- 2026年烟草物流管理专员招聘考试笔试试题(含答案)
- TOP100-2016全球案例研究峰会
- 2023年陕西省建筑安全员《C证》考试题库
- 中医馆医保检查高频扣分项总结2026
- 2026 年骨盆骨折失血性休克抢救护理个案
- 高考英语阅读理解障碍词汇集
- 2026年秋季初中物理开学第一课 学科思维训练教学设计
- 2026年聊城职业技术学院公开招聘工作人员(16名)笔试参考题库及答案详解
- 2026年河北中考语文考试(真题)及答案
- ISO 9001-2026质量管理体系之“10改进”流程清单(雷泽佳编制-2026A0)
- 2026年保密观试题库及参考答案
- 2026年初中物理教师进城选调三套模拟试卷(含答案)
- 2026年6月全国Ⅰ卷数学高考真题试题(原卷) 含答案
- 代发工资劳务外包合同
- 2026年林业局招聘历年仿真题
- 跨媒介视域下的冬至祝福短信创作:基于核心素养的初中八年级语文综合性学习教案
- 皮秒激光下硫系相变材料的相变机制与多阶光学性能解析
- 聚丙烯(PP)原材料MSDS报告(PPH-T03牌号)
评论
0/150
提交评论