这是更改对象角度的过程。旋转可以是顺时针或逆时针。对于旋转, 我们必须指定旋转角度和旋转点。旋转点也称为枢轴点。打印关于旋转哪个对象的信息。

旋转类型

逆时针方向

逆时针方向

枢轴点的正值(旋转角度)使对象沿逆时针(逆时针)方向旋转。

枢轴点的负值(旋转角度)使对象沿顺时针方向旋转。

旋转对象时, 对象的每个点都旋转相同的角度。

直线:直线由端点以相同角度旋转, 并在新端点之间重画线。

多边形:通过使用相同的旋转角度移动每个顶点来旋转多边形。

曲线:通过重新放置所有点并在新位置绘制曲线来旋转曲线。

圆:可以通过中心位置指定角度获得。

椭圆:可以通过将椭圆的长轴和短轴旋转所需角度​​来获得其旋转。

旋转矩阵为顺时针方向。

旋转矩阵是逆时​​针方向。

均匀坐标旋转矩阵(顺时针)

齐次坐标旋转矩阵(逆时针)

围绕任意点旋转:如果要旋转对象或围绕任意点旋转点, 首先, 我们将要围绕其旋转的点转换为原点。然后围绕原点旋转点或对象, 最后, 再次将其平移到原始位置。我们绕任意点旋转。

示例:要旋转点(x, y)

(xc yc)是绕逆时针方向旋转的点

步骤1:将点(xc yc)转换为原点

步骤2:围绕原点旋转(x, y)

步骤3:将旋转中心平移回原始位置

示例1:证明围绕原点的2D旋转是可交换的, 即R1 R2 = R2 R1。

解决方案:R1和R2是旋转矩阵

示例2:绕着原点旋转线CD, 使其端点为(3, 4)和(12, 15), 沿逆时针方向旋转45°。

解决方案:点C(3, 4)

例3:绕线AB绕其原点沿顺时针方向旋转AB, 端点为A(2, 5)和B(6, 12)。

解决方案:沿顺时针方向旋转。矩阵是

步骤1:旋转点A(2, 5)。取角30°

步骤2:旋转B点(6, 12)

旋转线的程序:

#include

#include

#include

int main()

{

intgd=0, gm, x1, y1, x2, y2;

double s, c, angle;

initgraph(&gd, &gm, "C:\\TC\\BGI");

setcolor(RED);

printf("Enter coordinates of line: ");

scanf("%d%d%d%d", &x1, &y1, &x2, &y2);

cleardevice();

setbkcolor(WHITE);

line(x1, y1, x2, y2);

getch();

setbkcolor(BLACK);

printf("Enter rotation angle: ");

scanf("%lf", &angle);

setbkcolor(WHITE);

c = cos(angle *3.14/180);

s = sin(angle *3.14/180);

x1 = floor(x1 * c + y1 * s);

y1 = floor(-x1 * s + y1 * c);

x2 = floor(x2 * c + y2 * s);

y2 = floor(-x2 * s + y2 * c);

cleardevice();

line(x1, y1 , x2, y2);

getch();

closegraph();

return 0;

}

输出:

旋转前

旋转后

程序旋转三角形:

#include

#include

#include

main()

{

intgd=0, gm, x1, y1, x2, y2, x3, y3;

double s, c, angle;

initgraph(&gd, &gm, "C:\\TURBOC3\\BGI");

setcolor(RED);

printf("Enter coordinates of triangle: ");

scanf("%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3);

setbkcolor(WHITE);

cleardevice();

line(x1, y1, x2, y2);

line(x2, y2, x3, y3);

line(x3, y3, x1, y1);

getch();

setbkcolor(BLACK);

printf("Enter rotation angle: ");

scanf("%lf", &angle);

setbkcolor(WHITE);

c = cos(angle *M_PI/180);

s = sin(angle *M_PI/180);

x1 = floor(x1 * c + y1 * s);

y1 = floor(-x1 * s + y1 * c);

x2 = floor(x2 * c + y2 * s);

y2 = floor(-x2 * s + y2 * c);

x3 = floor(x3 * c + y3 * s);

y3 = floor(-x3 * s + y3 * c);

cleardevice();

line(x1, y1 , x2, y2);

line(x2, y2, x3, y3);

line(x3, y3, x1, y1);

getch();

closegraph();

return 0;

}

输出:

旋转前

旋转后

计算机图形学 旋转平移原理,计算机图形旋转操作详细步骤相关推荐

  1. 计算机图形学生活应用,计算机图形学的应用实例(计算机图形作业).doc

    计算机图形学的应用实例(计算机图形作业).doc 计算机图形学大作业 计算机图形学的应用实例 班级: 学号: 姓名: 2012-03-12 计算机图形学的应用实例 一.计算机图像学简介 计算机图形学是 ...

  2. 计算机图形学的应用虚拟现实相关,虚拟现实技术中计算机图形学的应用——三维计算机图形.doc...

    虚拟现实技术中计算机图形学的应用--三维计算机图形 虚拟现实技术中计算机图形学的应用 --三维计算机图形 近年来虚拟头盔的发展越来越快.目前,这个虚拟头盔仅在瑞士圣约翰公园能够让体验者进入虚拟3D世界 ...

  3. 计算机图形学的应用虚拟现实相关,虚拟现实技术中计算机图形学的应用——三维计算机图形...

    虚拟现实技术中计算机图形学的应用--三维计算机图形 虚拟现实技术中计算机图形学的应用 --三维计算机图形 近年来虚拟头盔的发展越来越快.目前,这个虚拟头盔仅在瑞士圣约翰公园能够让体验者进入虚拟3D世界 ...

  4. 计算机图形学直线裁剪原理,计算机图形学-3.2用Liang-Barsky算法实现直线段裁剪...

    计算机图形学-3.2用Liang-Barsky算法实现直线段裁剪 计算机图形学-3.2用Liang-Barsky算法实现直线段裁剪 (1)算法设计原理 依次处理(p1,q1)(p2,q2)(p3,q3 ...

  5. 计算机图形学曲线生成原理,计算机图形学_曲线及生成.ppt

    计算机图形学_曲线及生成 华中理工大学计算机学院 陆枫 99-7 1999年7月 7.2.1 曲线的表示要求 1)唯一性 2)几何不变性 3)易于定界 4)统一性 5)易于实现光滑连接 6)几何直观 ...

  6. 计算机图形学常见算法原理,计算机图形学常用算法及代码大全

    <计算机图形学常用算法及代码大全>由会员分享,可在线阅读,更多相关<计算机图形学常用算法及代码大全(41页珍藏版)>请在人人文库网上搜索. 1.2.1.1 生成直线的DDA算法 ...

  7. 远程计算机如果关机咋办,远程关机的详细步骤有哪些?向日葵怎么远程关机?...

    生活节奏的加快,工作的忙碌,你是否有过出差后或者上班后把家里的电脑忘记关机了?一定程度上给人们带来不便,那么是如何实现远程关机的呢?下文就跟着小编详细了解远程关机的步骤. 远程关机的详细步骤有哪些? ...

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

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

  9. 计算机图形学之二维平移旋转缩放代码

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

最新文章

  1. 基于变分自动编码器(Variational Autoencoders)进行推荐系统的实施、Keras实现并可视化训练和验证误差、最后给出topK准确率和召回率
  2. python sanic部署_Sanic框架配置操作分析
  3. 【Kaggle-MNIST之路】CNN结构再改进+交叉熵损失函数(六)
  4. ux设计中的各种地图_UX设计中的格式塔原理
  5. webmagic抓取实例
  6. python2.7入门---内置函数
  7. iOS开发总结(A0)- MultipeerConnectivity
  8. 百度牵手“造王者”汉得,ToB 战场将迎大变局?| 畅言
  9. 看《乡村爱情》,秒懂区块链!
  10. C语言程序设计(第三版)何钦铭著 习题6-3
  11. 小米笔记本电脑键盘卡键维修
  12. 移动APP开发的三种常见模式
  13. 分布式一致性哈希分析
  14. 计算机桌面窗口背景原始设置,如何设置和更改桌面背景? -电脑资料
  15. mysqld: [ERROR] Found option without preceding group in config file /etc/my.cnf at line 1
  16. Supercell:靠两款手游如何做到30亿美金市值?
  17. Java 生成订单号
  18. jquery实现返回顶部功能
  19. uniapp写微信小程序怎么运行到微信开发工具上
  20. 深入浅出DDR系列(一)--DDR原理篇

热门文章

  1. Windows系统DOS命令之多线程技术
  2. 讲座回顾丨5G的全新可能:基于Smart Edge Open和EdgeX构建5G MEC
  3. 常见管理学原理、法则
  4. ffmpegguitool下载不了_FFmpeg GUI Tool下载-FFmpeg GUI Tool(视频处理)下载v1.2.4 安卓版-西西软件下载...
  5. 第4代计算机的应用,在第四代计算机期间内计算机的应用逐步进入到().docx
  6. 小型机和服务器有何区别
  7. 自己用html + js 一百行代码做一个朗读器
  8. python教育数据挖掘_Python 数据分析 与 数据挖掘 (介绍篇)
  9. 深度学习入门系列,用白话文的方式让你看得懂学的快(第八章)
  10. java 药店管理系统_java药店管理平台