Code for the Homework1
作业要求: 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的更多相关文章
- Code for the Homework1 改进
#include <iostream> #include <vector> #include "shape.h" //using namespace std ...
- python code 1_username registration & login
This tiny program consists of 2 parts - registration and login. In the part of registration, the key ...
- Visual Studio Code 代理设置
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- http status code
属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...
随机推荐
- C# 截图类
注意修改命名空间using System.Drawing; using System.Windows.Forms; namespace WindowsFormsApplication1 { ...
- css选择器有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先
CSS选择器:基本可以分为通配选择器,标签选择器,类选择器,ID选择器,简单属性选择,具体属性选择,根据部分属性值选择,特定属性选择,从结构上来分还有后代选择器,子元素选择器,相邻兄弟选择器以及伪类. ...
- MongoDB - Installing MongoDB on Linux
1. 下载最新稳定版本的安装包. [huey@huey mongodb]$ wget -c --no-check-certificate https://fossies.org/linux/misc/ ...
- Entity Framework + WCF REST JSON Service
利用EF 和WCF 建立一个REST JSON Service. 首先我们要下载一个Visual Studio 的Template 叫 "ADO.NET C# POCO Entity Gen ...
- iOS 在viewController中监听Home键触发以及重新进入界面的方法
第一步:创建2个NSNotificationCenter监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@sele ...
- Agile.Net 组件式开发平台 - 服务器端部署
应用服务器: 操作系统要求推荐Windows Server 2008,服务器硬件如果支持64位建议安装64位操作系统产品以最大化发挥服务器性能. 安装操作系统Windows Server 2008,其 ...
- CSS常见的浏览器前缀
为了让浏览器识别某些专属属性,有时候需要在CSS属性前增加浏览器前缀 -ms-:Microsoft IE -moz-:Mozilla Firefox -o-:Opera Opera -webkit-: ...
- Php 数据类型
数据类型 JS中二大类 基本数据类型 number string boolean undefined null 复合数据类型 array object function php数据类型分为三大类 标量 ...
- CSS的浮动和清除
CSS浮动和清除 什么是浮动? 在实现效果上,让元素浮起来(飘起来),动起来(向左或向右移动) 浮动本质:就是将两个块元素同存一行. float 取值:主要是对浮动的方向进行控制 left:让元素向左 ...
- 日程管理控件 glDatePicker
之前接触过一款日程管理控件,叫 FullCalendar,功能很强大,会列出每天的事项,可选择编辑并且可以定制自己的日历,然而,有时候,我们的网页上只需要一个简单的日历,迷你但实用,有日程安排的日期高 ...