作业要求: http://www.cnblogs.com/bingc/p/4919692.html

代码(未使用Eigen):

 #include <iostream>
 #include <Eigen/Dense>
 using namespace Eigen;
 using Eigen::MatrixXd;
 using namespace std;
 class POINT
 {
 public:
     string name;
     double x, y;

 };
 class LINE
 {
 public:
     string name;
     POINT p_start,p_end;
 };
 class TRIANGLE
 {
 public:
     string name;
     POINT p1,p2, p3;
 };
 void rotate(POINT *pt, double angle);
 int main()
 {    string name,cmd,name1;
     int num;
     , l = , t = ;
     ;
     POINT point[maxnum];
     LINE line[maxnum];
     TRIANGLE triangle[maxnum];
     int flag;
     char a, b, c;
     double x, y, angle;
     )
     {
         cout << "存点、线、三角形,请输入0,操作点、线、三角形请输入1" << endl;
         cin >> flag;
         switch (flag)
         {
         :{
             cout << "请输入图形名称 点数 坐标" << endl;
             cin >> name;
             cin >> num;
             switch (num)
             {
             :
             {
                 if (p >= maxnum) { cout << "您的点的个数已达上限,不能再存!" << endl; break; }
                 point[p].name = name;
                 cin >> a >> point[p].x >> b >> point[p].y >> c;
                 p++;
                 break;
             }
             :
             {
                 if (l >= maxnum) { cout << "您的线的个数已达上限,不能再存!" << endl; break; }
                 line[l].name = name;
                 cin >> a >> line[l].p_start.x >> b >> line[l].p_start.y >> c >> a >> line[l].p_end.x >> b >> line[l].p_end.y >> c;
                 l++;
                 break;
             }
             :
             {
                 if (t >= maxnum) { cout << "您的三角形的个数已达上限,不能再存!" << endl; break; }
                 triangle[t].name = name;
                 cin >> a >> triangle[t].p1.x >> b >> triangle[t].p1.y >> c >> a >> triangle[t].p2.x >> b >> triangle[t].p2.y >> c >> a >> triangle[t].p3.x >> b >> triangle[t].p3.y >> c;
                 t++;
                 break;
             }
             default: {cout << "点数输入错误" << endl; break; }
             }
             break;
         }
         :{
             cout << "请输入操作指令" << endl;
             cin >> cmd;
             cin>> name1;
             if (cmd == "move")
             {
                 cin >> a >> x >> b >> y >> c;
                 ; i < p; i++)
                 {
                     if (name1 == point[i].name)
                     {
                         point[i].x += x;
                         point[i].y += y;
                         cout << "平移后的点为" << "(" << point[i].x << "," << point[i].y << ")" << endl;
                     }
                 }
                 ; i < l; i++)
                 {
                     if (name1 == line[i].name)
                     {
                         line[i].p_start.x += x;
                         line[i].p_start.y += y;
                         line[i].p_end.x += x;
                         line[i].p_end.y += y;
                         cout << "平移后的线段端点为" << "(" << line[i].p_start.x << "," << line[i].p_start.y << ")" << "、(" << line[i].p_end.x << "," << line[i].p_end.y << ")" << endl;
                     }
                 }
                 ; i < t; i++)
                 {
                     if (name1 == triangle[i].name)
                     {
                         triangle[i].p1.x += x;
                         triangle[i].p1.y += y;
                         triangle[i].p2.x += x;
                         triangle[i].p2.y += y;
                         triangle[i].p3.x += x;
                         triangle[i].p3.y += y;
                         cout << "平移后的三角形顶点为为" << "(" << triangle[i].p1.x << "," << triangle[i].p1.y << ")" << "、(" << triangle[i].p2.x << "," << triangle[i].p2.y << ")" << "、(" << triangle[i].p3.x << "," << triangle[i].p3.y << ")" << endl;
                     }
                 }
             }
             else if (cmd == "rotate")
             {
                 cin >> angle;
                 ; i < p; i++)
                 {
                     if (name1 == point[i].name)
                     {
                         rotate(&point[i], angle);
                         cout << "旋转后的点为" << "(" << point[i].x << "," << point[i].y << ")" << endl;
                     }
                 }
                 ; i < l; i++)
                 {
                     if (name1 == line[i].name)
                     {
                         rotate(&line[i].p_start, angle);
                         rotate(&line[i].p_end, angle);
                         cout << "旋转后的直线端点为" << "(" << line[i].p_start.x << "," << line[i].p_start.y << ")" << "、(" << line[i].p_end.x << "," << line[i].p_end.y << ")" << endl;
                     }
                 }
                 ; i < t; i++)
                 {
                     if (name1 == triangle[i].name)
                     {
                         rotate(&triangle[i].p1, angle);
                         rotate(&triangle[i].p2, angle);
                         rotate(&triangle[i].p3, angle);
                         cout << "旋转后的三角形顶点为为" << "(" << triangle[i].p1.x << "," << triangle[i].p1.y << ")" << "、(" << triangle[i].p2.x << "," << triangle[i].p2.y << ")" << "、(" << triangle[i].p3.x << "," << triangle[i].p3.y << ")" << endl;
                     }
                 }
             }
             else cout << "comand is error!" << endl;
             break;
         }
         default:{cout << "输入错误!" << endl; break; }

         }
     }

     ;
 }

 void rotate(POINT *pt, double angle)  //逆时针为正
 {
     double x, y,ang;
     x = pt->x;
     y = pt->y;
     ang = angle*;
     pt->x = x*cos(ang) - y*sin(ang);
     pt->y = x*sin(ang) + y*cos(ang);
 }

运行结果:

Code for the Homework1的更多相关文章

  1. Code for the Homework1 改进

    #include <iostream> #include <vector> #include "shape.h" //using namespace std ...

  2. python code 1_username registration & login

    This tiny program consists of 2 parts - registration and login. In the part of registration, the key ...

  3. Visual Studio Code 代理设置

    Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...

  4. 我们是怎么做Code Review的

    前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...

  5. Code Review 程序员的寄望与哀伤

    一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...

  6. 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM

    刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...

  7. 在Visual Studio Code中配置GO开发环境

    一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...

  8. 代码的坏味道(14)——重复代码(Duplicate Code)

    坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...

  9. http status code

    属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...

随机推荐

  1. 用java调用oracle存储过程总结(转)

    //1.call+包名+存储过程名(传入.传出值用?) String str="{call SMSBUSINESS.deleteZhZMember(?,?,?)}"; //2.建立 ...

  2. css3 颜色记

    css3 颜色 opacity 使元素呈现出半透明效果. opacity:alphavalue || inherit alphavalue:默认值为1,可以取0~1任意浮点数.取值为1时,元素完全不透 ...

  3. ASP连接ACCESS数据库

    Set conn2 = Server.CreateObject("ADODB.Connection") conn2.Open "Provider=Microsoft.Je ...

  4. Windows7 下配置添加ASP功能

    按照如下顺序添加 1.控制面板-程序-打开或关闭Windows功能 2.Internet信息服务-万维网服务-应用程序开发功能 3.勾选ASP 和ASP.net选项 确定后安装完毕即可支持.

  5. COM 参数有in, out ,retval

    COM 参数有in, out ,retval 来源:http://blog.sina.com.cn/s/blog_472a9f0c01017uer.html In 输入参数,它的值不被返回    Ou ...

  6. Oracle 简介 三层结构

    引言: 主流数据库:sql server, oracle, my sql,IBM公司的DB2 ,oracle占有量很大 dbms(database management system)数据库管理系统 ...

  7. Eclipse Class Decompiler---Java反编译插件

    若转载,请标明出处http://www.cnblogs.com/last_hunter/p/5626779.html,谢谢! ------------------------------------- ...

  8. 【转】Linux杀死fork产生的子进程的僵尸进程defunct

    僵尸进程 就是 已经结束,但是还没有清理出去的.用kill -9 $PID 也无法杀死. 所以程序中应该避免出现僵尸进程. 用fork之后,父进程如果没有wait /waitpid 等待子进程的话,子 ...

  9. 一个功能齐全的IOS音乐播放器应用源码

    该源码是在ios教程网拿过来的,一个不错的IOS音乐播放器应用源码,这个是我当时进公司时 我用了一晚上写的  图片都是在别的地方扒的,主要是歌词同步,及上一曲,下一曲,功能齐全了 ,大家可以学习一下吧 ...

  10. Linux--fedora21 PC机安装以及拨号上网和无限上网

    最近回家,学习许久未用的linux,之前也是在培训的时候用的是 ubuntu ,这次回家查了下 fedora 最适合开发人员使用,所以就装了个试试.刚开始只能拨号上网,经过三天时间的各种搜索查找终于解 ...