Skip to content

Latest commit

 

History

History
117 lines (68 loc) · 2.6 KB

Readme.md

File metadata and controls

117 lines (68 loc) · 2.6 KB

大闸蟹和CZ的交点检测

STEP1

使用说明

功能:

一个能求解简单几何形状之间交点的控制台程序。

使用方法:

使用命令行参数intersect.exe -i input.txt -o output.txt

输入格式

  • 第 1 行:一个自然数 N >= 1,表示输入的几何图形的数目。
  • 第 2 行至第 N + 1 行:每行描述一个几何图形。具体格式如下:
    • 直线:L <x1> <y1> <x2> <y2>,表示通过点 (x1, y1) 和 (x2, y2) 的直线。输入保证给定两点不重合。
    • 射线(新增需求):R <x1> <y1> <x2> <y2>,表示起点为 (x1, y1),且通过点 (x2, y2) 的射线。输入保证给定两点不重合。
    • 线段(新增需求):S <x1> <y1> <x2> <y2>,表示以 (x1, y1) 和 (x2, y2) 为端点的线段。输入保证给定两点不重合。
    • 圆(附加题):C <x> <y> <r>,表示以点 (x, y) 为中心,半径为 r 的圆。输入保证半径 r > 0。

所有直线参数均为整数,范围为 (-100000, 100000)。

保证交点个数有限个。

在bin/input.txt里输入;

输出格式

共 1 行,输出平面中满足需求的点的数目。在bin/output.txt

样例

输入

1
L 0 0 1 1

输出

0

输入

4
C 1 0 2
C 2 2 1
C 3 -2 6
L -1 4 4 -1

输出

6

PS:是使用VS2019编写的,拷贝出来上传的文件更改了文件夹名称以及应用程序的名称,直接使用除intersect.exe外的文件可能会发生错误(尤其指test中的文件,是在VS编写本机单元测试用的,拷贝出来时路径已经发生了变化),使用release模式,采用多线程M/T生成。

STEP2

新建立了DLL项目来对交点求解程序进行封装

提供了以下接口

给定集合对象集合返回交点集合

新增集合对象返回交点集合

判断集合对象是否重复

代码主要在pch.cpp以及pch.h中实现

STEP3

增加了错误处理

包括

操作符错误

有多余字符

缺少字符

数字格式错误

越界

直线重复

圆重复

直线、射线、线段非法

圆非法

STEP4

增加了ui界面

直接运行intersect.exe即可进入ui界面。

同时该exe还支持之前作业的命令行操作,使用intersect.exe -i input.txt -o output.txt 即可求解交点并在文件中输出交点个数以及错误信息(也会弹出UI界面)。

若想像之前一样不使用ui,请使用文件intersect_noui.exe

图形化界面实现了绘制直线以及展示交点的功能,支持文件导入以及单独输入

UI的坐标系展示的是600*600,数值稍微大一写效果比较明显