当前位置:
首页 >
图形学实验之显示一个飞机(C++实现)
发布时间:2025/3/20
58
豆豆
生活随笔
收集整理的这篇文章主要介绍了
图形学实验之显示一个飞机(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++实现)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Haskell语言实现判断一个整数是否是
- 下一篇: 先来先服务调度算法(C++实现)