图形学实验之显示一个飞机(C++实现)
显示一个飞机:(飞机各顶点的坐标存放在数组中)
(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++实现)相关推荐
- 计算机图形学实验四——投影变换
这里写目录标题 一级目录 一级目录 [实验名称] 投影变换 [实验目的] 理解并掌握形体的投影变换的原理: [实验原理] 绘制一点透视图的变换矩阵: T= 1 0 0 0 0 1 0 0 0 0 ...
- 计算机图形学 | 实验三:绘制一个四边形
计算机图形学 | 实验三:绘制一个四边形 计算机图形学 | 实验三:绘制一个四边形 初始化 顶点输入 数据处理 VAO.VBO 顶点属性 顶点着色器和片段着色器 渲染 EBO 完整代码 华中科技大学& ...
- 计算机图形学 | 实验四:绘制一个球体
计算机图形学 | 实验四:绘制一个球体 计算机图形学 | 实验四:绘制一个球体 封装Shader 为什么要封装Shader 如何使用 绘制球模型 球面顶点遍历 构造三角形图元 开启线框模式 开启面剔除 ...
- 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像
文章目录 一.LED点阵介绍 二.硬件设计 三.软件设计 1.LED点阵(点亮一个点) 2.LED点阵(显示数字) 3.LED点阵(显示图像) 四.实验现象 1.LED 点阵(点亮一个点) 2. LE ...
- 华北电力大学计算机图形学实验报告,华北电力大学计算机图形学实验报告分析.doc...
华北电力大学计算机图形学实验报告分析 科 技 学 院 课程设计(综合实验)报告 ( 2013 -- 2014 年度第 2 学期) 实验名称 OpenGL基本图元绘制实验 课程名称 计算机图形学 | | ...
- 计算机图形学真实感显示代码,计算机图形学实验 - 真实感图形场景的生成
<计算机图形学实验 - 真实感图形场景的生成>由会员分享,可在线阅读,更多相关<计算机图形学实验 - 真实感图形场景的生成(4页珍藏版)>请在人人文库网上搜索. 1.计算机图形 ...
- 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...
计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...
- OpenGL南邮计算机图形学实验报告二——两个纹理的渐变变换和移动
OpenGL南邮计算机图形学实验报告二--两个纹理的渐变变换和移动 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 ...
- 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...
计算机图形学实验报告-直线中点bresenham算法的实现资料.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.90 积分 计算机图形 ...
最新文章
- android屏幕分辨率详解 ldpi mdpi hdpi 程序UI自适应 《官方翻译》
- 面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧
- [转]PHP用mysql数据库存储session
- 概率与统计在计算机应用,计算机技术在概率论和数理统计中的应用
- python123数值运算代码_Python中的变量、数据类型(数值、列表)操作实例
- 我眼中的分布式系统可观测性
- 怎样更改itunes备份位置_iphone备份太大,严重挤占C盘空间,怎么把备份放在其他的硬盘?...
- 关于Bom下标准模式和混杂模式!
- [原创]获取还原某音弹幕(web版)
- 药品的泡罩包装技术介绍
- mysql密码错误解决方法--windows和ubuntu18.04
- linux smit工具,Linux安全基础 SMIT入门
- windows未服务器未响应,windows不服务器未响应
- 锁定放大器 matlab,锁定放大器的MATLAB建模与仿真
- 最长回文子串(C/C++动态规划)
- CRMEB微信公众号安装说明
- 浅谈曲面参数化---顾险峰(老顾谈几何)
- 使用python登陆Yahoo邮箱
- vue路由无痕浏览nodeJS环境搭建ElementUI简介
- 用css固定textarea文本域大小尺寸