Проверить является ли фигура квадратом по координатам 4 точек - C#
Формулировка задачи:
Даны координаты 4рех точек проверить является ли фигура квадратом. Все случаи учитывать
Решение задачи: «Проверить является ли фигура квадратом по координатам 4 точек»
textual
Листинг программы
using System.IO;
using System;
namespace IsSquare
{
struct Point
{
double x;
double y;
public Point( double x, double y)
{
this.x = x;
this.y = y;
}
public double dist(Point P)
{
return Math.Sqrt((this.x - P.x)*(this.x - P.x) + (this.y - P.y)*(this.y - P.y));
}
}
class Program
{
public static void Main()
{
Point[] P = new Point[4];
//Чтение из консоли сам напишешь. Я так присваиваю.
P[0] = new Point(0,0);
P[1] = new Point(5,1);
P[2] = new Point(-1,5);
P[3] = new Point(4,6);
//Вычисляем расстояния между всемя точками
double[] L = new double[6];
L[0] = P[0].dist(P[1]);
L[1] = P[0].dist(P[2]);
L[2] = P[0].dist(P[3]);
L[3] = P[1].dist(P[2]);
L[4] = P[1].dist(P[3]);
L[5] = P[2].dist(P[3]);
//Сортируем массив
Array.Sort(L);
//Делим расстояния на длину самого короткого из них
for(int i=5; i>-1; i--)
{
L[i] /= L[0];
}
//Если массив получился похож на { 1, 1, 1, 1, sqrt(2), sqrt(2) }, то получился квадрат
if ( (Math.Abs(L[0] - 1) < 1E-8) &&
(Math.Abs(L[1] - 1) < 1E-8) &&
(Math.Abs(L[2] - 1) < 1E-8) &&
(Math.Abs(L[3] - 1) < 1E-8) &&
(Math.Abs(L[4] - Math.Sqrt(2)) < 1E-8) &&
(Math.Abs(L[5] - Math.Sqrt(2)) < 1E-8)
) Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
}