显示一个飞机:(飞机各顶点的坐标存放在数组中)

(1)按比例缩小或放大.缩放比例由键盘输入,缩放的参考点由用户确定;
(2)旋转.由键盘输入旋转角度和旋转中心;

实验源码:

#include<iostream>using namespace std;#include<graphics.h>void showAirplane(int numberOfApex,int *p) {int gdriver, gmode;int *q;//临时存储空间int xReference, yReference;//缩放参考点float xscaling, yscaling;//缩放比例int xrolling, yrolling;//旋转中心float angle;//旋转角度cout << "请输入缩放参考点:";cin >> xReference;cin >> yReference;cout << "请输入x坐标的缩放比例:";cin >> xscaling;cout << "请输入y坐标的缩放比例:";cin >> yscaling;cout << "请输入旋转中心:";cin >> xrolling;cin >> yrolling;cout << "请输入旋转角度:";cin >> angle;angle = float(angle / 57.3);//角度转化为弧度q = new int[2 * numberOfApex];initgraph(&gdriver, &gmode, "");drawpoly(numberOfApex, p);//画初始图形for (int i = 0; i < numberOfApex; i++) {//进行缩放变换*(q + 2 * i) = int(*(p + 2 * i)*xscaling - xReference*xscaling + xReference + 0.5);*(q + 2 * i + 1) = int(*(p + 2 * i + 1)*yscaling - yReference*yscaling + yReference + 0.5);}setcolor(RED);drawpoly(numberOfApex, q);//画缩放变换后的图形for (int i = 0; i < numberOfApex; i++) {//进行旋转变换*(q + 2 * i) = int(*(p + 2 * i)*cos(angle) - *(p + 2 * i + 1)*sin(angle) + xrolling - xrolling*cos(angle) + yrolling*sin(angle)+0.5);*(q + 2 * i + 1) = int(*(p + 2 * i)*sin(angle) + *(p + 2 * i + 1)*cos(angle) + yrolling - yrolling*cos(angle) - xrolling*sin(angle) + 0.5);}setcolor(YELLOW);drawpoly(numberOfApex, q);//画旋转变换后的图形delete q;getchar();getchar();closegraph();}int main() {int numberOfApex;//顶点个数int *p;//存放顶点cout << "请输入顶点的个数:";cin >> numberOfApex;p = new int[2 * numberOfApex];for (int i = 0; i < numberOfApex; i++) {cout << "请输入第" << i + 1 << "个顶点:";cin >> *(p + 2 * i);cin >> *(p + 2 * i + 1);}showAirplane(numberOfApex, p);//调用函数delete p;return 0;}

图形学实验之显示一个飞机(C++实现)相关推荐

  1. 计算机图形学实验四——投影变换

    这里写目录标题 一级目录 一级目录 [实验名称] 投影变换 [实验目的] 理解并掌握形体的投影变换的原理: [实验原理] 绘制一点透视图的变换矩阵: T= 1  0 0 0 0  1 0 0 0  0 ...

  2. 计算机图形学 | 实验三:绘制一个四边形

    计算机图形学 | 实验三:绘制一个四边形 计算机图形学 | 实验三:绘制一个四边形 初始化 顶点输入 数据处理 VAO.VBO 顶点属性 顶点着色器和片段着色器 渲染 EBO 完整代码 华中科技大学& ...

  3. 计算机图形学 | 实验四:绘制一个球体

    计算机图形学 | 实验四:绘制一个球体 计算机图形学 | 实验四:绘制一个球体 封装Shader 为什么要封装Shader 如何使用 绘制球模型 球面顶点遍历 构造三角形图元 开启线框模式 开启面剔除 ...

  4. 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像

    文章目录 一.LED点阵介绍 二.硬件设计 三.软件设计 1.LED点阵(点亮一个点) 2.LED点阵(显示数字) 3.LED点阵(显示图像) 四.实验现象 1.LED 点阵(点亮一个点) 2. LE ...

  5. 华北电力大学计算机图形学实验报告,华北电力大学计算机图形学实验报告分析.doc...

    华北电力大学计算机图形学实验报告分析 科 技 学 院 课程设计(综合实验)报告 ( 2013 -- 2014 年度第 2 学期) 实验名称 OpenGL基本图元绘制实验 课程名称 计算机图形学 | | ...

  6. 计算机图形学真实感显示代码,计算机图形学实验 - 真实感图形场景的生成

    <计算机图形学实验 - 真实感图形场景的生成>由会员分享,可在线阅读,更多相关<计算机图形学实验 - 真实感图形场景的生成(4页珍藏版)>请在人人文库网上搜索. 1.计算机图形 ...

  7. 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...

    计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...

  8. OpenGL南邮计算机图形学实验报告二——两个纹理的渐变变换和移动

    OpenGL南邮计算机图形学实验报告二--两个纹理的渐变变换和移动 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 ...

  9. 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...

    计算机图形学实验报告-直线中点bresenham算法的实现资料.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.90 积分 计算机图形 ...

最新文章

  1. android屏幕分辨率详解 ldpi mdpi hdpi 程序UI自适应 《官方翻译》
  2. 面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧
  3. [转]PHP用mysql数据库存储session
  4. 概率与统计在计算机应用,计算机技术在概率论和数理统计中的应用
  5. python123数值运算代码_Python中的变量、数据类型(数值、列表)操作实例
  6. 我眼中的分布式系统可观测性
  7. 怎样更改itunes备份位置_iphone备份太大,严重挤占C盘空间,怎么把备份放在其他的硬盘?...
  8. 关于Bom下标准模式和混杂模式!
  9. [原创]获取还原某音弹幕(web版)
  10. 药品的泡罩包装技术介绍
  11. mysql密码错误解决方法--windows和ubuntu18.04
  12. linux smit工具,Linux安全基础 SMIT入门
  13. windows未服务器未响应,windows不服务器未响应
  14. 锁定放大器 matlab,锁定放大器的MATLAB建模与仿真
  15. 最长回文子串(C/C++动态规划)
  16. CRMEB微信公众号安装说明
  17. 浅谈曲面参数化---顾险峰(老顾谈几何)
  18. 使用python登陆Yahoo邮箱
  19. vue路由无痕浏览nodeJS环境搭建ElementUI简介
  20. 用css固定textarea文本域大小尺寸

热门文章

  1. 3. Qt Creator
  2. 劳动力工资调整模型的探讨——数学建模
  3. ❗HTML引入CSS的三种常用方式汇总❗
  4. [Java基础] sort方法--------排序的那些事
  5. [JAVA基础类库] String类 ○ StringBuffer类 ○ StringBuilder类
  6. MySQL—视图(二)
  7. 设定printf在终端输出的颜色
  8. win10如何换pip源
  9. 网安面试只要掌握这十点技巧,轻轻松松吊打面试官
  10. 19、HTML文件上传域