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

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

这只是一个算法上

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

谢谢

下面请看源码

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

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

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 /// <summary>
 /// 判断图形是否是三角形
 /// 3点一线
 /// </summary>

 namespace ConsoleApplication1
 {
     struct Point
     {
         public Point(float x, float y)
         {
             this.x = x;
             this.y = y;
         }
         public float x;
         public float y;
     }
     class ZJB
     {
         ;
         public Point[] point = new Point[MaxNum];
         ;//角的个数
         ;//点的个数
         ;//可以忽略的距离
         /// <summary>
         /// 求两点之间的距离
         /// </summary>
         /// <param name="p1">坐标点</param>
         /// <param name="p2">坐标点</param>
         /// <returns>两点之间的距离</returns>
         public float PointDistance(Point p1, Point p2)
         {
             float Value = (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y);
             Value = (float)Math.Sqrt(Value);
             return Value;
         }

         /// <summary>
         /// 判断三角形
         /// </summary>
         public void Delta()
         {
             //测试用例---------------------------
             point[] = , );
             point[] = , );
             point[] = , );
             point[] = , );
             point[] = , );
             point[] = , );
             point[] = , );
             point[] = , );
             point[] = , );
             point[] = , );
             PointNum = ;
             //-----------------------------------

             ; i < PointNum - ; i++)
             {
                 ], point[i - ]);
                 ]);
                 ]);
                 Console.WriteLine("(ab + bc) - ac={0}", (ab + bc) - ac);
                 if ((ab + bc) - ac > DistanceError)
                 {
                     AngleNum++;
                 }
                 )
                 {
                     ac = PointDistance(point[i], point[]);
                     ab = PointDistance(point[i], point[]);
                     bc = PointDistance(point[], point[]);
                     Console.WriteLine("(ab + bc) - ac={0}", (ab + bc) - ac);
                     if ((ab + bc) - ac > DistanceError)
                     {
                         AngleNum++;
                     }
                 }
             }

             Console.WriteLine("这是一个{0}边形", AngleNum);

         }
     }
 }

01010101010101010101

01010101010101010101

01010101010101010101

C#判断画的图形是不是三角形的更多相关文章

  1. C++ 画星号图形——空心三角形(星号左对齐)(核心代码介绍)

    //输出一个由星号组成的三角形(星号左对齐) int a;//控制组成三角形的星号的行数 cout<<"请输入要组成三解形的星号的行数n(n>=2):\n"; c ...

  2. C++ 画星号图形——空心三角形(星号居中对齐)(核心代码介绍)

    //输出另外一种由星号组成的三角形(星号居中对齐) int a;//控制组成三角形的星号的行数 cout<<"请输入要组成三解形的星号的行数n(n>=2):\n" ...

  3. iOS-CGContextRef画各种图形例子

    iOS-CGContextRef画各种图形例子 绘制效果图 绘制代码 - (void)drawRect:(CGRect)rect { //一个不透明类型的Quartz 2D绘画环境,相当于一个画布,你 ...

  4. Android利用canvas画各种图形

    Android利用canvas画各种图形(点.直线.弧.圆.椭圆.文字.矩形.多边形.曲线.圆角矩形) 本文链接:https://blog.csdn.net/rhljiayou/article/det ...

  5. (转)第04节:Fabric.js用路径画不规则图形

    在Canvas上画方形.圆形.三角形都是很容易的,只要调用fabric对应的方法就可以了,但这些都是规则的图形,如果你想画一个不规则的图形,这时候你可以用fabric.js提供的路径绘图方法.所谓路径 ...

  6. Directx11教程(6) 画一个简单的三角形(2)

    原文:Directx11教程(6) 画一个简单的三角形(2)      在上篇教程中,我们实现了在D3D11中画一个简单的三角形,但是,当我们改变窗口大小时候,三角形形状却随着窗口高宽比例改变而改变, ...

  7. AJ学IOS(29)UI之Quartz2D自定义下载控件_画各种图形

    AJ分享,必须精品 效果 自定义控件过程 主要过程在上一篇里有介绍了,这里主要介绍下代码实现 先做好要放的view 然后实现呢主要就是四步: 1:获取上下文 2:拼接路径 3:把路径添加到上下文. 4 ...

  8. 放肆的使用UIBezierPath和CAShapeLayer画各种图形

    CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CAL ...

  9. 使用UIBezierPath和CAShapeLayer画各种图形

    转载自:http://www.cocoachina.com/ios/20160214/15251.html CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画 ...

随机推荐

  1. Let's Encrypt,免费好用的 HTTPS 证书

    很早之前我就在关注 Let's Encrypt 这个免费.自动化.开放的证书签发服务.它由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务,而 ...

  2. Python之线程

    操作系统线程理论 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别 ...

  3. windows系统设置虚拟机开机自启并运行虚拟系统

    简述 很多用windows系统电脑开发的童鞋,会在自己电脑上装一个虚拟机,然后在装一个linux系统当作服务器来使用. 但每次电脑开机都要去重启一下虚拟机电源,实在是不划算.下面博主教大家在windo ...

  4. vue中的vue-cli

    在前面的学习过程中我相信你们已经对vue有了一定的了解,现在我们来看一下vue中的vue-cli. 学习这个我们首先需要的是node环境的,如果你的网络环境慢的话建议安装淘宝镜像,在cmd中输入 np ...

  5. MyBatis(二):Select语句传递参数的集中方案

    从别人说的方案中看出,传递参数方案还挺多,不如自己整理下,以便以后使用过程中有个笔记回忆录. 1.传递一个参数的用法: 配置文件 <select id="getById" r ...

  6. POJ-1753 Flip Game---二进制枚举子集

    题目链接: https://vjudge.net/problem/POJ-1753 题目大意: 有4*4的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑->白或者白-> ...

  7. Java面试题——中级(上)

    List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1.ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高 ...

  8. Java基础学习(四)-- 接口、集合框架、Collection、泛型详解

    接口 一.接口的基本概念 关键字为:Interface,在JAVA编程语言中是一个抽象类型,是抽象方法的集合.也是使用.java文件编写.   二.接口声明 命名规范:与类名的命名规范相同,通常情况下 ...

  9. MySQL 5.7 基于复制线程SQL_Thread加快恢复的尝试

    1. MySQL 数据恢复常用办法 MySQL恢复的方法一般有三种: 1. 官方推荐的基于全备+binlog , 通常做法是先恢复最近一次的全备,然后通过mysqlbiinlog --start-po ...

  10. [LeetCode] Prime Number of Set Bits in Binary Representation 二进制表示中的非零位个数为质数

    Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime ...