C#判断画的图形是不是三角形

这个源代码写的不是十全十美,只是提供一个

还待完善的地方例如判断是否这个图形是封闭的。得空在解决吧

这只是一个算法上

谁有c#的参考手册网盘分享一份

谢谢

下面请看源码

凑够150个字了,不废话了。

鼠标画图难免会有误差,所以需要容忍一定的误差

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 /// <summary>
 8 /// 判断图形是否是三角形
 9 /// 3点一线
10 /// </summary>
11 
12 
13 namespace ConsoleApplication1
14 {
15     struct Point
16     {
17         public Point(float x, float y)
18         {
19             this.x = x;
20             this.y = y;
21         }
22         public float x;
23         public float y;
24     }
25     class ZJB
26     {
27         const int MaxNum = 100;
28         public Point[] point = new Point[MaxNum];
29         public int AngleNum = 0;//角的个数
30         public int PointNum = 0;//点的个数
31         public float DistanceError = 2;//可以忽略的距离
32         /// <summary>
33         /// 求两点之间的距离
34         /// </summary>
35         /// <param name="p1">坐标点</param>
36         /// <param name="p2">坐标点</param>
37         /// <returns>两点之间的距离</returns>
38         public float PointDistance(Point p1, Point p2)
39         {
40             float Value = (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y);
41             Value = (float)Math.Sqrt(Value);
42             return Value;
43         }
44 
45         /// <summary>
46         /// 判断三角形
47         /// </summary>
48         public void Delta()
49         {
50             //测试用例---------------------------
51             point[0] = new Point(1, 0);
52             point[1] = new Point(0, 10);
53             point[2] = new Point(0, 19);
54             point[3] = new Point(0, 30);
55             point[4] = new Point(10, 30);
56             point[5] = new Point(20, 30);
57             point[6] = new Point(30, 29);
58             point[7] = new Point(20, 20);
59             point[8] = new Point(10, 10);
60             point[9] = new Point(0, 0);
61             PointNum = 10;
62             //-----------------------------------
63 
64 
65             for (int i = 1; i < PointNum - 1; i++)
66             {
67                 float ac = PointDistance(point[i + 1], point[i - 1]);
68                 float ab = PointDistance(point[i], point[i - 1]);
69                 float bc = PointDistance(point[i], point[i + 1]);
70                 Console.WriteLine("(ab + bc) - ac={0}", (ab + bc) - ac);
71                 if ((ab + bc) - ac > DistanceError)
72                 {
73                     AngleNum++;
74                 }
75                 if (i == PointNum - 2)
76                 {
77                     ac = PointDistance(point[i], point[1]);
78                     ab = PointDistance(point[i], point[0]);
79                     bc = PointDistance(point[0], point[1]);
80                     Console.WriteLine("(ab + bc) - ac={0}", (ab + bc) - ac);
81                     if ((ab + bc) - ac > DistanceError)
82                     {
83                         AngleNum++;
84                     }
85                 }
86             }
87 
88             Console.WriteLine("这是一个{0}边形", AngleNum);
89 
90 
91         }
92     }
93 }

 01010101010101010101

 01010101010101010101

 01010101010101010101

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据小魔方

让执着成为一种习惯——仿网易数独玫瑰气泡图

没有难学的技艺,只有不够辛勤的付出! 今天这篇文章推送仿的的是网易数独的一幅信息图,内容呈现的是全球各国人民对于养老所持的态度,数据来源于Pew Reserch...

4115
来自专栏xingoo, 一个梦想做发明家的程序员

邻接图的深度广度优先遍历

邻接图的优点就是,现用现申请,空间存储很灵活,并且需要的空间也很小。我们在做复杂网络时,通常也是用这种方法。缺点是不适合并行化,因为cuda只支持连续地址空间的...

2219
来自专栏Albert陈凯

技术面试要了解的算法和数据结构知识

目录 在线练习 在线编程面试 数据结构 算法 贪心算法 位运算 复杂度分析 视频教程 面试宝典 计算机科学资讯 文件结构 在线练习 Le...

3225
来自专栏C/C++基础

打印1到最大的n位数

这道题是面试过可能会遇到的手写代码题。如n为3时,那么需要打印1到999。需要注意的是当输入的n很大时,最大的n位数是不能通过int或者long long in...

671
来自专栏Leetcode名企之路

【Leetcode】60. 第k个排列

给定 n 的范围是 [1, 9]。 给定 k 的范围是[1, n!]。 示例 1:

2922
来自专栏xiaoxi666的专栏

【模板小程序】十进制大数除法(输出商和余数)

大数除法,应该算是四则运算里面最难的一种了。不同于一般的模拟,除法操作步数模仿手工除法,而是利用减法操作实现的。

1662
来自专栏前端说吧

JS-用js的for循环实现九九乘法表以及其他算数题等

4886
来自专栏海天一树

小朋友学C语言(4):单精度浮点数与双精度浮点数

上节课 简单介绍了浮点数。计算机程序中的浮点数分为单精度浮点数和双精度浮点数。 单精度和双精度精确的范围不一样。 计算机里的最基本的存储单位用位(bit)来表...

38612
来自专栏小樱的经验随笔

51 Nod 1028 大数乘法 V2【Java大数乱搞】

1028 大数乘法 V2 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出2个大整数A,B,计算A*B的结果。 Inpu...

2704
来自专栏用户2442861的专栏

对vector等STL标准容器进行排序操作

STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除......可以说,如果你理解了STL,你会...

2612

扫码关注云+社区

领取腾讯云代金券