以下均为MFC工程代码

代码一:简单实现

void CGeotranView::Onyuantu()
{// 原图,画三角形CDC *pDC=GetDC();pDC->MoveTo(100,100);pDC->LineTo(200,50);pDC->LineTo(200,150);pDC->LineTo(100,100);ReleaseDC(pDC);
}void CGeotranView::Ontranslation()
{// 平移 tx=50,ty=60CDC *pDC=GetDC();int tx=50,ty=60;pDC->MoveTo(100+tx,100+ty);pDC->LineTo(200+tx,50+ty);pDC->LineTo(200+tx,150+ty);pDC->LineTo(100+tx,100+ty);ReleaseDC(pDC);
}void CGeotranView::Onrotation()
{// 旋转, 角度sita=30度CDC *pDC=GetDC();double sita=30;double hudu=sita*3.14159/180;pDC->MoveTo(int(100*cos(hudu)-100*sin(hudu)),int(100*sin(hudu)+100*cos(hudu)));pDC->LineTo(int(200*cos(hudu)-50*sin(hudu)),int(200*sin(hudu)+50*cos(hudu)));pDC->LineTo(int(200*cos(hudu)-150*sin(hudu)),int(200*sin(hudu)+150*cos(hudu)));pDC->LineTo(int(100*cos(hudu)-100*sin(hudu)),int(100*sin(hudu)+100*cos(hudu)));ReleaseDC(pDC);    }void CGeotranView::Onscaling()
{// 缩放 sx=2,sy=3int sx=2,sy=3;CDC *pDC=GetDC();pDC->MoveTo(100*sx,100*sy);pDC->LineTo(200*sx,50*sy);pDC->LineTo(200*sx,150*sy);pDC->LineTo(100*sx,100*sy);ReleaseDC(pDC);
}

代码二:新的点的坐标计算通过函数实现

POINT translationPoint(POINT point,int tx,int ty)
{POINT newpoint;newpoint.x=    point.x+tx;newpoint.y=    point.y+ty;    return newpoint;
}POINT rotationPoint(POINT point,double sita)
{POINT newpoint;double hudu=sita*3.14159/180;newpoint.x=  (int)(point.x*cos(hudu)-point.y*sin(hudu));newpoint.y= (int)(point.x*sin(hudu)+point.y*cos(hudu));return newpoint;
}POINT scalingPoint(POINT point,int sx,int sy)
{POINT newpoint;newpoint.x=    point.x*sx;newpoint.y= point.y*sy;return newpoint;
}void CGeotranView::Onyuantu2()
{POINT point1,point2,point3;point1.x=200;point1.y=200;point2.x=300;point3.y=150;point3.x=300;point2.y=250;// 原图,画三角形CDC *pDC=GetDC();pDC->MoveTo(point1);pDC->LineTo(point2);pDC->LineTo(point3);pDC->LineTo(point1);ReleaseDC(pDC);}void CGeotranView::Ontranslation2()
{POINT point1,point2,point3;point1.x=200;point1.y=200;point2.x=300;point3.y=150;point3.x=300;point2.y=250;// 平移 tx=50,ty=60CDC *pDC=GetDC();int tx=50,ty=60;pDC->MoveTo(translationPoint(point1,tx,ty));pDC->LineTo(translationPoint(point2,tx,ty));pDC->LineTo(translationPoint(point3,tx,ty));pDC->LineTo(translationPoint(point1,tx,ty));ReleaseDC(pDC);
}void CGeotranView::Onrotation2()
{POINT point1,point2,point3;point1.x=200;point1.y=200;point2.x=300;point3.y=150;point3.x=300;point2.y=250;// 旋转, 角度sita=30度CDC *pDC=GetDC();double sita=30;pDC->MoveTo(rotationPoint(point1,sita));pDC->LineTo(rotationPoint(point2,sita));pDC->LineTo(rotationPoint(point3,sita));pDC->LineTo(rotationPoint(point1,sita));ReleaseDC(pDC); }void CGeotranView::Onscaling2()
{POINT point1,point2,point3;point1.x=200;point1.y=200;point2.x=300;point3.y=150;point3.x=300;point2.y=250;// 缩放 sx=2,sy=2int sx=2,sy=2;CDC *pDC=GetDC();pDC->MoveTo(scalingPoint(point1,sx,sy));pDC->LineTo(scalingPoint(point2,sx,sy));pDC->LineTo(scalingPoint(point3,sx,sy));pDC->LineTo(scalingPoint(point1,sx,sy));ReleaseDC(pDC);  }

计算机图形学之二维平移旋转缩放代码相关推荐

  1. C语言计算机图形学平移代码,计算机图形学之二维平移旋转缩放代码

    以下均为MFC工程代码 代码一:简单实现 void CGeotranView::Onyuantu() { // 原图,画三角形 CDC *pDC=GetDC(); pDC->MoveTo(100 ...

  2. 线性代数:矩阵变换图形(二维平移缩放旋转)

    转载自: https://blog.csdn.net/yinhun2012/article/details/79544205 前面我们从理论上理解了图形学中图形的变换过程,具体可以理解为如果要对一个图 ...

  3. 计算机图形学(二维、三维几何变换)

    一.几何变换的概念 几何变换又称建模变换,指只改变组成形体的几何元素的几何信息(大小.形状.相对位置),而不改变图形拓扑信息的变换. 图形变换模式: (1)坐标系不动,图形变动(以下内容采用这种模式) ...

  4. ITK:使用均方执行二维平移配准

    ITK:使用均方执行二维平移配准 内容提要 输出结果 C++实现代码 内容提要 本示例说明了Insight中图像注册框架的用法.应该将其读为ITK注册.该示例应作为对解决图像配准问题时通常涉及的元素的 ...

  5. 【飞控理论】【惯性导航基础】二维平面的旋转如何用代数表示?三维平面的旋转如何用代数表示?什么是四元数?四元数、欧拉角、方向余弦之间有什么关系?

    上一篇欧拉角 由于欧拉角在描述三维空间物体旋转问题时存在万向节死锁问题(详情戳这里),所以引入四元数概念. 目录 1.二维平面的旋转 2.三维平面的旋转(什么是四元数) 3.<捷联惯性导航> ...

  6. 计算机图形学实验二 《绘制任意斜率的直线》

    计算机图形学实验二 <绘制任意斜率的直线> 视频讲解地址 一.Bresenham算法 用视频讲会好点我之前也录过相关视频可以先凑合看 二.设计CLine类 之前也说了C++一个类是由源文件 ...

  7. 【计算机图形学】小白谈计算机图形学(二)画圆篇之中点画圆法,Bresenham画圆算法,椭圆实操,线型处理详解

    小白谈计算机图形学(二)画圆篇之中点画圆法,Bresenham画圆算法,椭圆实操,线型处理详解 引言 如何画圆 基本思想 中点画圆法 中点画圆基本思路 中点画圆改进 Bresenham画圆算法 Bre ...

  8. 计算机图形学 裁剪算法源代码,OpenGL计算机图形学梁友栋裁剪算法实验代码及运行结果.doc...

    OpenGL计算机图形学梁友栋裁剪算法实验代码及运行结果.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分  .<计算 ...

  9. 计算机图形学实验——二维卡通人物交互

    计算机图形学实验1.2卡通人物交互 OpenGL卡通人物交互 基础"图元"绘制 OpenGL拾取物体 反走样 略提反走样问题 OpenGL实现二维反走样 放缩.旋转和拖动 小结 O ...

最新文章

  1. c++ 异步回调_知道Java中的回调机制吗?
  2. python干啥用_用python内置函数能干些什么?
  3. ie浏览器跳转谷歌浏览器_微软IE浏览器的命运:加速死亡
  4. 开源的pop3和smtp组件(支持中文及SSL)
  5. 转Java调用C/C++编写的第三方dll动态链接库(非native API)--- JNI
  6. IPtables终于可以使用了,客户机不可以上网的问题解决了
  7. 设计实现java的指针分析系统_JAVA程序设计
  8. POJ 1125 Stockbroker Grapevine
  9. 区块链以太坊开发测试网汇总
  10. windows计算器_计算Windows计算器中的错误
  11. 基于Layabox引擎的魔塔微信小游戏设计与实现
  12. 机器人genghis_全球50大经典机器人
  13. itext合成pdf报异常 PDF header signature not found
  14. 基于NFS共享存储实现kvm虚拟主机动态迁移
  15. python模拟点击后获取状态码_Python获取网页状态码
  16. 2020-03-05
  17. NSIS教程(1): 基础语法
  18. ESP8266+CH340下载电路+LCD显示屏显示天气时钟
  19. python流程图怎么画-Python使用graphviz画流程图过程解析
  20. 第七届力学、数学与应用物理学国际会议(ICMMAP 2023)

热门文章

  1. balsamiq mockups 3安装
  2. Win10桌面壁纸、锁屏壁纸保存位置
  3. mysql报错信息1067_mysql 1067错误报错!这个是mysqld - -console得到的信息
  4. 汉光武帝刘秀--昆阳之战
  5. PB 数据窗口数据导入Excel, 如果存在则追加,不存在则创建。
  6. 安卓模拟器错误: Could not open
  7. 旋转正方体加径向渐变
  8. Vue对高德地图2.0的封装使用
  9. 平头哥剑池CDK 更新重磅来袭!三大亮点速看!
  10. 千挑万选, 终于确定了