Рубрики

Как проверить, если заданные четыре точки образуют квадрат

По заданным координатам четырех точек на плоскости найдите, составляют ли четыре точки квадрат или нет.
Чтобы проверить квадрат, нам нужно проверить следующее.
а) Все стороны четверок, образованные точками, одинаковы.
б) Угол между любыми двумя сторонами составляет 90 градусов. (Это условие является обязательным, поскольку четырехугольник также имеет те же стороны.
c) Убедитесь, что обе диагонали имеют одинаковое расстояние

Идея состоит в том, чтобы выбрать любую точку и рассчитать ее расстояние от остальных точек. Пусть выбранная точка будет «р». Чтобы сформировать квадрат, расстояние двух точек должно быть одинаковым от «р», пусть это расстояние будет d. Расстояние от одной точки должно отличаться от этого d и должно быть равно √2 раз d. Пусть эта точка с разным расстоянием будет 'q'.
Вышеупомянутое условие не достаточно хорошо, поскольку точка с другим расстоянием может быть на другой стороне. Мы также должны проверить, что q находится на том же расстоянии от 2 других точек, и это расстояние такое же, как и d.

Ниже приведены реализации вышеуказанной идеи.

C ++

// Программа на C ++ для проверки, составляют ли четыре заданные точки квадрат или нет.
#include <iostream>

using namespace std;

  
// Структура точки в 2D-пространстве

struct Point {

    int x, y;

};

  
// Полезная функция для поиска квадрата расстояния
// из точки 'p' в точку 'q'

int distSq(Point p, Point q)

{

    return (p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y);

}

  
// Эта функция возвращает истину, если (p1, p2, p3, p4) образуют
// квадрат, иначе ложь

bool isSquare(Point p1, Point p2, Point p3, Point p4)

{

    int d2 = distSq(p1, p2); // от p1 до p2

    int d3 = distSq(p1, p3); // от p1 до p3

    int d4 = distSq(p1, p4); // от p1 до p4

  

    // Если длины if (p1, p2) и (p1, p3) одинаковы, то

    // следующие условия должны быть выполнены, чтобы сформировать квадрат.

    // 1) Квадрат длины (p1, p4) такой же, как дважды

    // квадрат (p1, p2)

    // 2) Квадрат длины (p2, p3) одинаков

    // как двойной квадрат (p2, p4)

  

    if (d2 == d3 && 2 * d2 == d4

        && 2 * distSq(p2, p4) == distSq(p2, p3)) {

        return true;

    }

  

    // Два приведенных ниже случая похожи на приведенный выше

    if (d3 == d4 && 2 * d3 == d2

        && 2 * distSq(p3, p2) == distSq(p3, p4)) {

        return true;

    }

    if (d2 == d4 && 2 * d2 == d3

        && 2 * distSq(p2, p3) == distSq(p2, p4)) {

        return true;

    }

  

    return false;

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    Point p1 = { 20, 10 }, p2 = { 10, 20 },

          p3 = { 20, 20 }, p4 = { 10, 10 };

    isSquare(p1, p2, p3, p4) ? cout << "Yes" : cout << "No";

    return 0;

}

Джава

// Java-программа для проверки, составляют ли четыре заданные точки квадрат или нет.

  

class GFG

{

  
// Структура точки в 2D-пространстве

static class Point 

{

    int x, y;

  

        public Point(int x, int y) 

        {

            this.x = x;

            this.y = y;

        }

      
};

  
// Полезная функция для поиска квадрата расстояния
// из точки 'p' в точку 'q'

static int distSq(Point p, Point q)

{

    return (p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y);

}

  
// Эта функция возвращает истину, если (p1, p2, p3, p4) образуют
// квадрат, иначе ложь

static boolean isSquare(Point p1, Point p2, Point p3, Point p4)

{

    int d2 = distSq(p1, p2); // от p1 до p2

    int d3 = distSq(p1, p3); // от p1 до p3

    int d4 = distSq(p1, p4); // от p1 до p4

  

    // Если длины if (p1, p2) и (p1, p3) одинаковы, то

    // следующие условия должны быть выполнены, чтобы сформировать квадрат.

    // 1) Квадрат длины (p1, p4) такой же, как дважды

    // квадрат (p1, p2)

    // 2) Квадрат длины (p2, p3) одинаков

    // как двойной квадрат (p2, p4)

  

    if (d2 == d3 && 2 * d2 == d4

        && 2 * distSq(p2, p4) == distSq(p2, p3))

    {

        return true;

    }

  

    // Два приведенных ниже случая похожи на приведенный выше

    if (d3 == d4 && 2 * d3 == d2

        && 2 * distSq(p3, p2) == distSq(p3, p4)) 

    {

        return true;

    }

    if (d2 == d4 && 2 * d2 == d3

        && 2 * distSq(p2, p3) == distSq(p2, p4))

    {

        return true;

    }

  

    return false;

}

  
// Код драйвера

public static void main(String[] args)

{

    Point p1 = new Point(20, 10), p2 = new Point( 10, 20 ),

        p3 = new Point(20, 20 ), p4 = new Point( 10, 10 );

    System.out.println(isSquare(p1, p2, p3, p4)==true ? "Yes" : "No");

}
}

  
// Этот код предоставлен PrinciRaj1992

python3

# Программа Python3 для проверки
# четыре заданные точки образуют квадрат или нет.

class Point:

      

    # Структура точки в 2D-пространстве

    def __init__(self, x, y):

        self.x = x

        self.y = y

  
# Полезная функция для поиска квадрата
# расстояние от точки 'p' до точки 'q'

def distSq(p, q):

    return (p.x - q.x) * (p.x - q.x) +\

           (p.y - q.y) * (p.y - q.y)

  
# Эта функция возвращает true, если (p1, p2, p3, p4)
# сформировать квадрат, иначе ложь

def isSquare(p1, p2, p3, p4):

  

    d2 = distSq(p1, p2) # от p1 до p2

    d3 = distSq(p1, p3) # от p1 до p3

    d4 = distSq(p1, p4) # от p1 до p4

  

    # Если длины, если (p1, p2) и (p1, p3) одинаковы, то

    # следующие условия должны быть выполнены, чтобы сформировать квадрат.

    # 1) Квадрат длины (p1, p4) такой же, как дважды

    # квадрат (р1, р2)

    # 2) Квадрат длины (p2, p3) одинаков

    # в два раза больше квадрата (p2, p4)

  

    if d2 == d3 and 2 * d2 == d4 and \

                    2 * distSq(p2, p4) == distSq(p2, p3):

        return True

  

    # Два приведенных ниже случая похожи на приведенный выше

    if d3 == d4 and 2 * d3 == d2 and \

                    2 * distSq(p3, p2) == distSq(p3, p4):

        return True

  

    if d2 == d4 and 2 * d2 == d3 and \

                    2 * distSq(p2, p3) == distSq(p2, p4):

        return True

  

    return False

  
Код водителя

if __name__=="__main__":

    p1 = Point(20, 10)

    p2 = Point(10, 20)

    p3 = Point(20, 20)

    p4 = Point(10, 10)

      

    if isSquare(p1, p2, p3, p4):

        print('Yes'

    else:

        print('No')

  
# Этот код предоставлен Mayank Chaudhary
# aka chaudhary_19

C #

// Программа AC # для проверки, составляют ли четыре заданные точки квадрат или нет.

using System;

  

class GFG

{

  
// Структура точки в 2D-пространстве

class Point 

{

    public int x, y;

  

    public Point(int x, int y) 

    {

        this.x = x;

        this.y = y;

    }

      
};

  
// Полезная функция для поиска квадрата расстояния
// из точки 'p' в точку 'q'

static int distSq(Point p, Point q)

{

    return (p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y);

}

  
// Эта функция возвращает истину, если (p1, p2, p3, p4) образуют
// квадрат, иначе ложь

static bool isSquare(Point p1, Point p2, Point p3, Point p4)

{

    int d2 = distSq(p1, p2); // от p1 до p2

    int d3 = distSq(p1, p3); // от p1 до p3

    int d4 = distSq(p1, p4); // от p1 до p4

  

    // Если длины if (p1, p2) и (p1, p3) одинаковы, то

    // следующие условия должны быть выполнены, чтобы сформировать квадрат.

    // 1) Квадрат длины (p1, p4) такой же, как дважды

    // квадрат (p1, p2)

    // 2) Квадрат длины (p2, p3) одинаков

    // как двойной квадрат (p2, p4)

    if (d2 == d3 && 2 * d2 == d4

        && 2 * distSq(p2, p4) == distSq(p2, p3))

    {

        return true;

    }

  

    // Два приведенных ниже случая похожи на приведенный выше

    if (d3 == d4 && 2 * d3 == d2

        && 2 * distSq(p3, p2) == distSq(p3, p4)) 

    {

        return true;

    }

    if (d2 == d4 && 2 * d2 == d3

        && 2 * distSq(p2, p3) == distSq(p2, p4))

    {

        return true;

    }

    return false;

}

  
// Код драйвера

public static void Main(String[] args)

{

    Point p1 = new Point(20, 10), p2 = new Point(10, 20),

        p3 = new Point(20, 20), p4 = new Point(10, 10);

    Console.WriteLine(isSquare(p1, p2, p3, p4) == true ? "Yes" : "No");

}
}

  
// Этот код предоставлен 29AjayKumar

Выход:

Yes

Расширенная проблема:
Проверьте, образуют ли четыре сегмента прямоугольник

Эта статья предоставлена Anuj . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Как проверить, если заданные четыре точки образуют квадрат

0.00 (0%) 0 votes